Я использую 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