【发布时间】:2014-02-14 16:53:14
【问题描述】:
我必须在 iOS 应用程序中绘制大而复杂的绘图。绘图区域也必须是可滚动和可缩放的。 我通过将绘图区域拆分为许多小的 CALayer 作为瓷砖来实现这一点。每当用户将绘图区域滚动一定量时,不可见区域的图块就会移动到另一侧,并在其中绘制新内容。每个 CALayer 都有一个绘图委托,只有被移动的图块才能获得 setNeedsDisplay 调用。
事实上,我以某种方式模仿了 CATiledLayer 的行为,但我不能直接使用它,因为我需要比它提供的更多控制和灵活性。
到目前为止,我的代码运行良好,但在复杂的绘图中,在滚动期间重绘内容时,UI 中仍然存在问题。我希望绘图完全在后台,但 UI 线程似乎在绘图期间阻塞。
有没有办法让iOS在后台异步调用CALayer的绘图委托?我实际上不介意绘图是否显示有点延迟(因为无论如何瓷砖都会出现在可见区域之外)。
【问题讨论】:
标签: ios asynchronous calayer