PDFKit – 使用pageViewController的PDFView – 刷到下一页时页面渲染速度慢

我有一个设置为使用pageViewController的PDFView:

let pdfView = PDFView() let pdfDoc = PDFDocument(url: Bundle.main.url(forResource: "test", withExtension: "pdf")!) pdfView.document = pdfDoc pdfView.autoScales = true pdfView.displayDirection = .horizontal pdfView.usePageViewController(true, withViewOptions: [:]) 

每当我滑动到下一页时,下一页都会模糊半秒,然后才会显得很清晰。 这很烦人。 我可以以某种方式预加载页面吗? 我没有在文档中找到任何属性/方法。

(有趣的是,我在MacOS上的Preview时遇到完全相同的问题,因为它处于全屏模式[永远,在我拥有的每个mac上])

它不依赖于pdf(文件)大小。 每次尝试的pdf都会出现问题。

谢谢你的帮助

请确保根据您的要求添加.maxScaleFactor .minScaleFactor的值,并查看它是否对加载时间有任何影响。 例如

 .maxScaleFactor = 4.0; .minScaleFactor = self.scaleFactorForSizeToFit; 

我认为这是由于PDF的高分辨率和PDFView呈现PDF的方式。 您有关于PDF的更多信息吗?

您可以尝试使用PDF较轻的图像吗? 它应该渲染得很好。 如果是这样,那么您的代码不是错误的,而是显示并将其呈现给视图所需的资源。

UPDATE

您可以尝试使用没有PageViewController的PDFView,并看到它的行为。 你可以这样做:

 pdfView = PDFView(frame: view.frame) pdfView.backgroundColor = UIColor.white var documentName: String = "test" if let documentURL = Bundle.main.url(forResource: documentName, withExtension: "pdf") { if let document = PDFDocument(url: documentURL) { pdfView.autoScales = true pdfView.displayDirection = .horizontal pdfView.displayMode = .singlePageContinuous pdfView.document = document } } self.view.addSubview(pdfView) 

它的行为有何不同? 我注意到选项usePageViewController更快地为大型PDF文档加载文档。 实施时需要考虑的事项。

我希望这有帮助

您是否尝试更改interpolationQuality选项?

绘制到PDFView上下文中的图像的插值质量。

可能的值是

  • 没有

也许你可以试试像

 pdfView.interpolationQuality = .low 

要么

 pdfView.interpolationQuality = .none