当 autoScales 设置为 true 时,iOS PDFView 会导致底层断言

Her*_*und 5 uikit ios swift ios-pdfkit swiftui

我正在开发一个需要显示相当大的 PDF 文件的应用程序。我使用 PDFKits PDFView 来实现此目的,然后将其包装在 UIViewRepresentable 中。问题是,设置时PDFView.autoScales = true我在启动时出错。该应用程序仍然可以运行,自动缩放功能也可以运行,但我仍然想修复该错误。我还应该提到,在 iOS 开发方面,我完全是一个初学者。

这是我的 makeUIView 的实现:

func makeUIView(context: UIViewRepresentableContext<PDFKitRepresentedView>) -> PDFKitRepresentedView.UIViewType {
    let pdfView = PDFView()
    pdfView.autoScales = true
    pdfView.pageBreakMargins.top = 0.0
    pdfView.pageBreakMargins.bottom = 0.0
    pdfView.pageShadowsEnabled = false
    pdfView.document = PDFDocument(url: self.url)        
    return pdfView
}
Run Code Online (Sandbox Code Playgroud)

这是错误:

[Assert] -[UIScrollView _clampedZoomScale:allowRubberbanding:]: Must be called with non-zero scale
[Unknown process name] CGAffineTransformInvert: singular matrix.
Run Code Online (Sandbox Code Playgroud)

每当 PDFView 初始化时,它们似乎都会被打印。有什么想法可能是什么问题吗?

小智 6

我遇到了同样的问题,现在已经解决了。

您的 pdfView 应首先设置框架。您可以给出任何值。

let pdfView = PDFView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))   
self.view.addSubview(pdfView)
Run Code Online (Sandbox Code Playgroud)

现在就OK了,然后解决错误


Her*_*und 0

我最终只是忽略了它。似乎工作正常。