【问题标题】:CALayer drawing in backgroundCALayer 在后台绘图
【发布时间】:2014-02-14 16:53:14
【问题描述】:

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

事实上,我以某种方式模仿了 CATiledLayer 的行为,但我不能直接使用它,因为我需要比它提供的更多控制和灵活性。

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

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

【问题讨论】:

    标签: ios asynchronous calayer


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      相关资源
      最近更新 更多