4

我有自定义绘图代码,它使用贝塞尔路径、渐变和笔触来执行我的绘图。我想通过循环 drawRect 并更改贝塞尔路径上的属性值来运行自定义动画。

我已经研究过使用 CAShapeLayer ( drawrect中的 UIView 动画),但这似乎对我来说并没有减少它。我的绘图代码非常复杂,有几百行,所有的绘图都是通过贝塞尔路径和渐变完成的。将绘图更改为 CAShapeLayer,然后向其添加颜色和渐变将非常耗时!

我知道 Apple 不建议显式调用 drawRect 而是使用 setNeedsDisplay 调用 draw rect (如何正确使用 DrawRect)。但是这样做的问题是我每次都会在动画中体验到细微的差异(尽管非常微小)。这可能与 setNeedsDisplay 安排在运行循环上调用 drawRect 但本身不直接调用它有关。

我想知道我可以使用哪些策略来循环 drawRect 并每次实现同步的完美定时动画。是否有可能做到这一点?

4

1 回答 1

3

Rob Napier 的使用自定义CALayer动画饼片切片动画自定义图层属性是学习如何在内部进行完全自定义绘图时如何制作自定义动画的两个很好的资源drawInContext:

如果你仍然觉得设置外部机制来同步绘图那么我建议你看一下CADisplayLink

于 2013-10-17T07:34:58.017 回答