【发布时间】:2013-06-24 15:57:57
【问题描述】:
如前一篇文章 (Here) 中所述,我正在创建一个从初始角度开始并移动到结束角度的动画。我决定为这个动画使用CADisplayLink,因为动画需要在用户输入期间尽可能快地运行,所以CALayer 和CAKeyframeAnimation 似乎实现这一点太慢了。
在实现调用setNeedsDisplay 的CADisplayLink 之后,我确实让动画工作了,但它看起来真的很糟糕,因为它将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 / kNumAnglesInAnimation 将整个圆(2*M_PI 弧度)分成相等的部分,最好我想为每一帧动画其中一个角度,但不知何故我仍然必须考虑kDrawDuration 和elapsedTime ,我只是不知道如何实现。
感谢您提供解决此问题的任何帮助!
【问题讨论】:
标签: ios caanimation cakeyframeanimation cadisplaylink