【发布时间】:2011-04-19 09:07:38
【问题描述】:
我有一个 Paging UIScrollView,其 contentSize 足够大,可以容纳许多用于缩放的小型 UIScrollView,viewForZoomingInScrollView 是一个 viewController,它拥有一个用于在其上绘制 PDF 页面的 CALayer。这让我可以像 ibooks PDF 阅读器一样浏览 PDF。
绘制PDF(Tiled Layers)的代码位于:
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx;
只需在可见屏幕上添加一个“页面”即可自动调用此方法。当我更改页面时,在绘制所有图块之前会有一些延迟,即使对象(页面)已经创建。
我想要做的是在用户滚动到下一页之前渲染下一页,从而防止可见的平铺效果。但是,我发现如果图层位于屏幕外,将其添加到滚动视图不会调用drawLayer。
这里有什么想法/常见的陷阱吗?
我试过了:
[viewController.view.layer setNeedsLayout];
[viewController.view.layer setNeedsDisplay];
注意:这在功能上复制 ibook 的事实与整个应用程序的上下文无关。
【问题讨论】:
标签: cocoa-touch ipad uiscrollview quartz-graphics calayer