同时缩放2个视图时延迟

问题描述

我正在编写一个应用程序以使用Pencilkit绘制PDF文件。因此,我创建了一个canvasView图层来绘制事物,并在后面显示了PDF(pdfView)图层。情况如下:

  • canvasView是一个UIScrollView,但它不提供对viewForZooming的访问权限,因此我必须手动缩放pdfView。
  • pdfView是一个UIView,但具有第一个子视图,即UIScrollView(我尝试缩放此UIScrollView而不是pdfView,但效果不佳)

在viewDidLayoutSubviews中:

// Add to subview
self.canvasView.insertSubview(pdfView,at: 0)
self.pdfView.frame = CGRect(x: 0,y: 0,width: canvasView.contentSize.width,height: canvasView.contentSize.height)
// Add pdf file to pdfView
guard let path = Bundle.main.url(forResource: "sample photo",withExtension: "pdf") else {return}
    if let document = PDFDocument(url: path) {
        pdfView.document = document
    }
// Set Scale Factor
self.pdfView.minScaleFactor = self.pdfView.scaleFactorForSizetoFit
self.pdfView.scaleFactor = self.pdfView.minScaleFactor
self.pdfView.maxScaleFactor = self.pdfView.minScaleFactor * 4

在scrollViewDidZoom中:

self.pdfView.scaleFactor = self.pdfView.minScaleFactor * (self.canvasView.zoomScale / self.canvasView.minimumZoomScale) 
        
self.pdfView.frame = CGRect(x: 0,height: canvasView.contentSize.height). // <-- i guess this made my app laggy

这是我的工作,我可以同时缩放2个视图。但是问题是,当我放大或缩小时,它会非常缓慢。 有趣的是:它在我的iPad Pro 2018中只是呆滞,而不是在我的iPhone中

当我在scrollViewDidZoom中删除最后一行时,我的应用仍然可以放大和缩小两个视图,没有滞后,但比例中断了。

我想知道更改框架是否非常昂贵,我不应该将其放置为scrollViewDidZoom,还有什么替代方法

P / s:我试图从pdfView的子视图(滚动视图)中更改contentOffset,但是它不起作用

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)