PDFKit - 使用pageViewController的PDFView - 滑动到下一页时页面渲染速度慢

时间:2018-03-17 11:59:28

标签: ios swift performance pdfkit

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

    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: [:])

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

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

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

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

<强>更新

您可以尝试使用不带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文档加载文档。实施时需要考虑的事项。

我希望这会有所帮助

答案 2 :(得分:0)

您是否尝试过更改interpolationQuality选项?

  

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

可能的值为

  • 无人

也许您可以尝试类似

pdfView.interpolationQuality = .low

pdfView.interpolationQuality = .none