我正在pdf编辑项目中,因为我必须在pdfview中添加签名,然后需要调整大小并删除该签名。现在,为此,我在带有透明alpha的pdfview顶部添加一个带有UIView的滚动视图,并向该UIView添加图像视图,但是缩放存在问题。当用户捏缩放时,如何获得pdfview缩放率。我想找到pdfview的zoom contentInset,因此可以设置自己的scrollview的contentInset。
尝试用::放大pdfview时获得pdfview比例因子
@objc func pdfViewScaleChange(notification:NSNotification){
print(self.pdfView.scaleFactor)
}
但是仍然找不到如何缩放并将UIScrollview设置为pdfview缩放。
您的PDFView具有一个名为scaleFactorForSizeToFit
的属性,这是PDFKits autoScales
用于缩放当前文档和布局的比例因子。
这是什么意思,如果在设置pdf时使用autoScales
属性,您将能够计算出用于缩放UIScrollview的数量。
这是我在更多上下文中的意思的示例:
//wherever you set your pdf (doesn't have to be viewDidAppear)
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
pdfView.document = PDFDocument(data: data)
pdfView.autoScales = true
//Add the observer here to detect when your pdf is zoomed in or out
NotificationCenter.default.addObserver(self,
selector: #selector(pdfPageWasZoomed),
name: Notification.Name.PDFViewPageChanged,
object: nil)
}
//wherever you want to zoom use this
func getScrollViewScaleFactor() -> CGFloat {
return (pdfView.scaleFactor / pdfView.scaleFactorForSizeToFit)
}
//Objc function which is called everytime the zoom changes
@objc private func pdfPageWasZoomed() {
//Here use the function getScrollViewScaleFactor() to get a factor to scale in or out by
}
这样的事情应该可以解决您的问题。