通过循环drawRect动画自定义Bezier路径

时间:2013-10-17 07:00:29

标签: ios uikit core-graphics drawrect uibezierpath

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

我已经看过使用CAShapeLayer(UIView animation in drawrect),但这似乎并不适合我。我的绘图代码非常复杂,只有几百行,所有绘图都是通过贝塞尔路径和渐变完成的。将图纸更改为CAShapeLayer然后添加颜色和渐变将非常耗时!

我知道Apple不建议显式调用drawRect,而是使用setNeedsDisplay来调用draw rect(How to use DrawRect correctly)。但这样做的问题是我每次都会在动画中遇到细微的差别(虽然非常微小)。它可能与setNeedsDisplay调度drawRect在运行循环中调用但不直接调用它的事实有关。

我想知道我可以使用什么策略来循环drawRect并每次实现同步完美定时动画。有可能这样做吗?

1 个答案:

答案 0 :(得分:3)

drawInContext:内完成自定义绘图时,Animating Pie Slices Using a Custom CALayerAnimating Custom Layer Properties by Rob Napier是学习如何制作自定义动画的两个很好的资源。

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