CALayer图画在背景中

时间:2014-02-14 16:53:14

标签: ios asynchronous calayer

我必须在iOS应用中做一个大而复杂的绘图。绘图区域也必须是可滚动和可缩放的。 我通过将绘图区域拆分为许多小CALayers作为切片来实现这一点。每当用户滚动绘图区域一定量时,来自不可见区域的图块被移动到另一侧并且内部绘制新内容。每个CALayer都有一个绘图委托,只有被移动的拼贴才能获得setNeedsDisplay调用。

事实上,我在某种程度上模仿了CATiledLayer的行为,我不能直接使用它,因为我需要更多的控制和灵活性。

到目前为止,我的代码运行良好,但是在复杂的绘图中,UI中仍然存在hickup,而滚动期间内容会重新绘制。我希望绘图完全在后台,但UI线程似乎在绘图过程中阻塞。

有没有办法让iOS在后台异步调用CALayer的绘图委托?我实际上并不介意图形显示有点延迟(因为瓷砖无论如何都会出现在可见区域之外)。

1 个答案:

答案 0 :(得分:6)

drawsAsynchronously属性设置为YES。这将在后台线程中排队绘图请求,而不是在主线程中绘制。