如前一篇文章 ( Here ) 中所述,我正在创建一个从初始角度开始并移动到结束角度的动画。我决定使用CADisplayLink
这个动画,因为动画需要在用户输入期间尽可能快地运行,所以CALayer
aCAKeyframeAnimation
似乎实现这一点太慢了。
在实现CADisplayLink
调用之后setNeedsDisplay
,我确实让动画工作了,但它看起来真的很糟糕,因为它将 endAngle 和 initialAngle 之间的差异分成非常明显的角度块,而不是创建从一个角度到下一个角度的连续流动。这是我拥有的当前代码:
CGFloat newAngleToAnimate = animationProgress + ((endAngle-initialAngle)/kDrawDuration)*elapsedTime;
// Use newAngleToAnimate to draw in drawInContext
animationProgress = newAngleToAnimate; // Update the progress for the next frame.
另外,kDrawDuration
定义为3.0f
,所以我希望动画从initialAngle
到endAngle
需要 3.0 秒。我通过计算将整个圆(2*M_PI
弧度)分成相等的部分2*M_PI / kNumAnglesInAnimation
,最好我想为每帧动画其中一个角度,但不知何故,我仍然必须考虑kDrawDuration
并elapsedTime
考虑到这一点,我只是不知道如何实现。
感谢您提供解决此问题的任何帮助!