问题描述
我正在开发一个需要显示相当大的 PDF 文件的应用程序。我为此使用 PDFKits PDFView,然后将其包装在 UIViewRepresentable 中。问题是在设置 PDFView.autoScales = true
时,我在启动时出错。该应用程序仍然有效,autoScales 功能也是如此,但我仍然想修复该错误。我还应该提到,在 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
}
这是错误:
[Assert] -[UIScrollView _clampedZoomScale:allowRubberbanding:]: Must be called with non-zero scale
[Unknown process name] CGAffineTransformInvert: singular matrix.
它们似乎在 PDFView 被初始化时被打印出来。任何想法可能是什么问题?
解决方法
我遇到了同样的问题,我现在已经解决了。
您的 pdfView 应先设置框架。您可以提供任何值。
let pdfView = PDFView(frame: CGRect(x: 0,y: 0,width: 100,height: 100))
self.view.addSubview(pdfView)
现在OK了,然后解决错误
,我最终忽略了它。似乎工作正常。