iOS PDFKit не заполняет UIView

Я использую PDFKit для отображения простых PDF-файлов. Когда я показываю их на экране внутри UIView, я использовал код ниже.

Цели: - Начните с содержимого, чтобы заполнить представление - хотите заполнить всю ширину экрана

override func viewDidLoad() {
    super.viewDidLoad()

    if let path = Bundle.main.path(forResource: "Disclaimer", ofType: "pdf") {
        let url = URL(fileURLWithPath: path)
        if let pdfDocument = PDFDocument(url: url) {
            pdfView.document = pdfDocument
            pdfView.autoScales = true
            pdfView.maxScaleFactor = 4.0
            pdfView.minScaleFactor = pdfView.scaleFactorForSizeToFit
            pdfView.displayMode = .singlePageContinuous
            pdfView.displaysPageBreaks = false
        }
    }
    self.view.backgroundColor = UIColor.black
}

В раскадровке я установил ограничение для UIview, чтобы заполнить всю ширину экрана - что он делает.

Используя autoscale продажи, документ PDF меньше ширины экрана, он в основном добавляет разницу вокруг pdf. Я могу увеличить масштаб и сделать Pdf заполнением всего экрана, прежде чем он переполнится, и появятся полосы прокрутки.

Если я задаю масштабный коэффициент вручную, я могу сделать PDF-страницу с одной страницей шириной экрана, но если PDF-файл имеет более одной страницы, ширина будет меньше ширины экрана с margin .

В конечном счете, я просто хочу заполнить всю ширину экрана с помощью PDF без каких-либо разниц.

Скриншот

Поблагодарили бы за помощь.

UPDATE: код, используемый в соответствии с рекомендациями ниже, но в настоящее время не работает:

if let path = Bundle.main.path(forResource: pdfObject, ofType: "pdf") {
            let url = URL(fileURLWithPath: path)
            if let pdfDocument = PDFDocument(url: url) {

            pdfView = PDFView(frame: CGRect(x: 0, y: 0, width: pdfView.frame.width, height: pdfView.frame.height))
                pdfView.document = pdfDocument

            }

        }

Примечание. PdfView - это мой UIView, который является PDFView

Всего 2 ответа


Правильно, во-первых, огромное спасибо Махешу. Хотя его ответ прямо не ответил на мой вопрос, две вещи, которые они сказали, дали путь к решению этого.

В целом, чтобы установить PDF для заполнения представления, мне нужно было установить автоматизацию и автомасштабирование до

pdfView.document = pdfDocument

И чтобы затем управлять увеличением, установите эти ПОСЛЕ

pdfView.document = pdfDocument

Таким образом, мой последний код:

func pdfDisplay() {

    if let path = Bundle.main.path(forResource: pdfObject, ofType: "pdf") {
        let url = URL(fileURLWithPath: path)
        if let pdfDocument = PDFDocument(url: url) {

            pdfView.autoresizesSubviews = true
            pdfView.autoresizingMask = [.flexibleWidth, .flexibleHeight, .flexibleTopMargin, .flexibleLeftMargin]
            pdfView.displayDirection = .vertical

            pdfView.autoScales = true
            pdfView.displayMode = .singlePageContinuous
            pdfView.displaysPageBreaks = true
            pdfView.document = pdfDocument

            pdfView.maxScaleFactor = 4.0
            pdfView.minScaleFactor = pdfView.scaleFactorForSizeToFit

        }
    } 
}

Не собираюсь лгать, я не уверен, почему это работает в этом порядке, я был бы признателен за комментарий от более мудрого ума, чем у меня, но я надеюсь, что это поможет другим


Просто используйте pdfview = PDFView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height)) перед pdfView.document = pdfDocument

И удалите эти строки:

pdfView.maxScaleFactor = 4.0
pdfView.minScaleFactor = pdfView.scaleFactorForSizeToFit

Есть идеи?

10000