PDFView - 如何自动缩放并仍然加载第一页?
Posted
技术标签:
【中文标题】PDFView - 如何自动缩放并仍然加载第一页?【英文标题】:PDFView - How to autoscale and still load first page? 【发布时间】:2019-08-22 22:16:57 【问题描述】:如果autoScales
被禁用,pdfView 会显示第一页(图 1),但如果启用,PDFview 会在 iPhoneX 上滚动到第二页(图 2)。
Github - https://github.com/2raptor/DownloadPDF
import UIKit
import PDFKit
class PDFViewController: UIViewController
var pdfView = PDFView()
var pdfURL: URL?
override func viewDidLoad()
super.viewDidLoad()
pdfView.translatesAutoresizingMaskIntoConstraints = false
if let pdfURL = pdfURL,
let document = PDFDocument(url: pdfURL)
pdfView.document = document
pdfView.autoScales = true
view.addSubview(pdfView)
// Add contstraints
pdfView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
pdfView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
pdfView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
pdfView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
尝试了几个解决方案,但没有奏效。
// after `pdfView.document = document` above
if let firstPage = document.page(at: 0)
let firstPageBounds = firstPage.bounds(for: pdfView.displayBox)
pdfView.go(to: CGRect(x: 0, y: firstPageBounds.height, width: 1.0, height: 1.0), on: firstPage)
【问题讨论】:
想知道您是否找到了解决方案?我有同样的问题。 在下面添加了我的答案 【参考方案1】:在设置 autoScales 之前设置 usePageViewController 解决了这个问题
pdfView.usePageViewController(true)
行之有效的完整解决方案
import UIKit
import PDFKit
class PDFViewController: UIViewController
var pdfView = PDFView()
var pdfURL: URL?
override func viewDidLoad()
super.viewDidLoad()
pdfView.translatesAutoresizingMaskIntoConstraints = false
if let pdfURL = pdfURL,
let document = PDFDocument(url: pdfURL)
pdfView.document = document
pdfView.usePageViewController(true)
pdfView.autoScales = true
view.addSubview(pdfView)
// Add contstraints
pdfView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
pdfView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
pdfView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
pdfView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
【讨论】:
很遗憾,这不会像您原来的帖子那样产生一个连续的页面。 没错。但是我没有一次显示单页的要求,所以我对这个解决方案没问题。我关注了这篇文章medium.com/@ji3g4kami/…请看看这是否有帮助。【参考方案2】:在我的情况下,ios 12.4 中存在pdfView.autoScales = true
的错误,我无能为力。尝试升级到 iOS 14.3 看看是否可以解决此问题。
【讨论】:
【参考方案3】:解决方案:https://***.com/a/66565702/6404249
我不能为你复制粘贴答案,但我希望它能帮助你!
【讨论】:
以上是关于PDFView - 如何自动缩放并仍然加载第一页?的主要内容,如果未能解决你的问题,请参考以下文章
如何知道用户何时在 PDFView 中滑动到下一页? - 安卓