我正在开发一款应该展示并允许用户缩放PDF页面的应用程序。 因此,我正在寻找Apple示例ZoomingPDFViewer。 基本上我理解示例代码。 但有几行对我来说并不明显。
示例代码的链接: http://developer.apple.com/library/ios/#samplecode/ZoomingPDFViewer/Introduction/Intro.html
PDFView.m中的:
//Set the layer's class to be CATiledLayer.
+ (Class)layerClass {
return [CATiledLayer class];
}
上面的代码是做什么的?
我再次在PDFView.m中看不到第二个代码片段:
self = [super initWithFrame:frame];
if (self) {
CATiledLayer *tiledLayer = (CATiledLayer *)[self layer];
...
我知道它会创建一个CATiledLayer对象。但是如何创建它并不清楚。
我希望有人可以给我一个简短的答案,因为我不想使用我不理解的代码。
谢谢!
答案 0 :(得分:0)
TiledPDFView.h类是UIView的子类,因此您可以看到UIView在该方法上有哪些文档。根据{{3}},它看起来像:
layerClass - 仅当您希望视图为其后备存储使用不同的Core Animation层时,才实现此方法。例如,如果您使用OpenGL ES进行绘图,则需要覆盖此方法并返回CAEAGLLayer类。
所以它似乎要求Core Animation系统使用平铺层。来自CATiledLayer
的更多文档:
CATiledLayer是CALayer的一个子类,提供了一种方法 可能是异步提供图层内容的图块 缓存在多个细节层面。 由于渲染器需要更多数据,因此在一个或多个背景上调用图层的drawLayer:inContext:方法 线程提供绘图操作以填充一个数据块。 可以使用绘图上下文的剪辑边界和CTM 确定所请求的图块的边界和分辨率。 可以使用setNeedsDisplayInRect:方法使层的区域无效,但是更新将是异步的。 虽然下一次显示更新很可能不包含更新 内容,未来的更新将会。