我正在尝试了解Apple的ZoomingPDFViewer示例代码。以下是我在理解它如何在我脑海中起作用时的一些问题。我不确定我是否理解正确。其代码的链接位于:http://developer.apple.com/library/ios/#samplecode/ZoomingPDFViewer/Introduction/Intro.html
(1)CATiledLayer用于表示不同缩放级别的PDF。我假设这个类用于查看类引用。除了这个类之外,你还会使用其他东西进行缩放功能吗?
(2)在TiledPDFView的initWithFrame中,他们这样做:tiledLayer.tileSize = CGSizeMake(512.0, 512.0);
tileSize是否是构成整个图像的切片?如果是这样,为什么这么大?
(3)oldPDFView和pdfView如何工作?就像在缩放的不同阶段中哪一个在前面,以及何时它们被换出。我很难理解逻辑的流程。感谢。
答案 0 :(得分:2)
(1)如果您不需要针对不同的缩放级别改变细节级别,或者如果PDF加载速度足够快以至于不能一次绘制几个图块,则使用常规CALayer的常规UIView将工作得很好。例如,如果您正在显示图像而不是PDF,并且图像加载速度足够快而不会导致性能障碍,则不需要CATiledLayer提供的异步加载。如果您想比较它们,PhotoScroller示例使用平铺和非平铺方法。
(2)tileSize属性改变了图层应分割成的块的大小。您可以将其设置为您想要的任何内容。 512x512真的不是那么大,特别是如果你的PDF尺寸很大。默认值为256x256。
(3)无论何时开始缩放,都会删除并释放oldPDFView。然后将pdfView分配给oldPDFView。缩放结束时,会创建一个新的pdfView,其中包含比例的更改并添加到旧的pdfView之上。如果新的比例增加,则将以更高的细节水平绘制新的pdfView。这使得您可以更深入地缩放PDF。 maximumZoomScale和minimumZoomScale仅限制您可以使用单个手势进行缩放的程度。