Swift PDFKit автоматически масштабирует неправильную страницу

Я пытаюсь отобразить PDF-файл на устройстве iOS (ipad) с помощью PDFkit. По какой-то причине Swift отображает вторую страницу при открытии дисплея. Я понимаю, что часть проблемы заключается в файле preview.autoscale. Когда я устанавливаю значение false, PDF-файл не открывается на весь экран, а начинается с первой страницы. Итак, я думаю, что проблема заключается в том, что часть автомасштабирования «масштабирует» масштабирование первой страницы. Я нашел аналогичный вопрос в stackoverflow (PDFKit: PDFView не изменяет размер, когда устройство повернуто), но решение не сработало. Ниже приведен соответствующий код:

    if let FBdocument = PDFDocument(url: fileURL) {
        pdfView.document = FBdocument
        pdfView.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview(pdfView)

        pdfView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor,constant: 0.0).isActive = true
        pdfView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor,constant: 0.0).isActive = true
        pdfView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor,constant: 0.0).isActive = true

        pdfView.bottomAnchor.constraint(equalTo: letdothis_button.topAnchor,constant: 0.0).isActive = true


        pdfView.autoScales = true

person Tom Carlson    schedule 17.10.2018    source источник
comment
Если вы собираетесь задать вопрос, и кто-то отвечает, это профессионально и просто вежливо ответить. Если это решило вашу проблему, проголосуйте и примите, если нет, предоставьте дополнительную информацию   -  person Nicholas Farmer    schedule 07.11.2018


Ответы (2)


У меня тоже были проблемы с автомасштабированием, я обнаружил, что двигается:

pdfView.autoScales = true

Наряду с любыми другими методами позиционирования до:

pdfView.document = FBdocument

И затем, чтобы добавить подвид последним:

 view.addSubview(pdfView)

Таким образом, я бы использовал:

if let FBdocument = PDFDocument(url: fileURL) {

    pdfView.translatesAutoresizingMaskIntoConstraints = false

    pdfView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor,constant: 0.0).isActive = true
    pdfView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor,constant: 0.0).isActive = true
    pdfView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor,constant: 0.0).isActive = true

    pdfView.bottomAnchor.constraint(equalTo: letdothis_button.topAnchor,constant: 0.0).isActive = true


    pdfView.autoScales = true

    pdfView.document = FBdocument

    view.addSubview(pdfView)
person Nicholas Farmer    schedule 01.11.2018
comment
Мне нужно добавить подпредставление, прежде чем я смогу добавить ограничения, иначе я получаю сообщение об ошибке «Невозможно активировать ограничение с помощью якорей». - person Henrik Hansen; 02.09.2019

Это ошибка только на iPad (отлично работает с iPhone), я отправил отчет об ошибке, и они ответили, что это дубликат другого отчета, что означает, что они знали об этом и, надеюсь, скоро это исправят.

person Basil    schedule 13.02.2019