1

我正在尝试了解 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 是如何工作的?就像在变焦的不同阶段哪个在前面,它们什么时候被换掉。我很难理解逻辑的流程。谢谢。

4

1 回答 1

2

(1) 如果您不需要为不同的缩放级别改变细节级别,或者如果 PDF 加载速度足够快以至于不能保证一次绘制几个图块,则带有常规 CALayer 的常规 UIView 将可以正常工作。例如,如果您显示的是图像而不是 PDF,并且图像加载速度足够快而不会导致性能障碍,则您不需要 CATiledLayer 提供的异步加载。如果您想比较它们,PhotoScroller 示例同时使用平铺和非平铺方法。

(2) tileSize 属性改变层应该被分割成的块的大小。您可以将其设置为任何您想要的。512x512 真的不是那么大,尤其是当您的 PDF 尺寸很大时。默认值为 256x256。

(3) 任何时候开始缩放,oldPDFView 都会被移除并释放。然后将 pdfView 分配给 oldPDFView。当缩放结束时,会创建一个新的 pdfView 并更改比例并将其添加到旧视图之上。如果新的比例增加,新的 pdfView 将以更高的细节水平绘制。这使得您可以越来越深入地放大 PDF。maximumZoomScale 和 minimumZoomScale 仅限制您可以使用单个手势进行缩放的程度。

于 2011-06-16T23:10:23.243 回答