我怎么知道CATiledLayer何时渲染了所有可见的图块?

时间:2011-02-22 15:18:51

标签: iphone ipad core-animation

我正在开发一个应用程序,我在CATiledLayer中呈现PDF内容。我想在完成平铺图层的渲染后触发一个方法。

在完成所有可见切片的渲染后,是否会立即调用任何委托方法?有没有其他方法可以知道何时完成?

2 个答案:

答案 0 :(得分:3)

您可以在绘制之前计算绘图所需的平铺数量。在tilingview的drawRect中,每个图块仅绘制一次。因此,将一个计数器放在调用新磁贴的draw rect的一部分中。当您的计数器达到总数时,请调用您的方法。

请记住,平铺的绘制是在后台线程上完成的。

答案 1 :(得分:0)

这需要一些创造性思维。我有一个类似的问题,我需要中止循环中间平铺图层的渲染。我处理它的方式有点复杂,但似乎工作得相当好。它涉及将绘制调用包装到NSThread内的平铺图层。线程有一个isFinished bool,您可以键值观察以发现平铺图层何时完成其渲染。

如果你对iOS上的线程感觉不舒服,这可能比它的价值更麻烦,但是会让你知道渲染何时完成,并且还能够取消线程操作(以及渲染) )如果需要的话。