同步 CALayer 绘图

Synchronizing CALayer drawing

一个绘图应用程序有多个 CALayer。一个 CALayer 显示绘图对象,这些对象的绘制成本很高。覆盖的第二个 CALayer 显示悬停效果 - 绘图对象在鼠标移动时突出显示。这第二个 CALayer 绘制起来并不昂贵。

当拖动绘图对象时,我在这两个 CALayer 上调用 [CALayer setNeedsDisplay]。每个 CALayer 检索绘图对象的当前状态并显示它们。随着拖动的进行,绘图对象的坐标会发生变化,但由于两个图层不是同时绘制,所以会出现坐标不匹配的情况。快速拖动时差异非常明显。

有什么CA方法可以更好地在这两层之间同步绘图吗?它不一定是完美的,但延迟需要小得多。使两个更新的层的子层都不起作用。摆弄异步绘图也无济于事。

您可以尝试通过在 setNeedsDisplay 之后立即在图层上调用 displayIfNeeded 来立即强制绘图。 出于某种原因,仅调用显示对我不起作用。