如何获得CABasicAnimation的进展?

时间:2012-02-21 12:05:30

标签: objective-c cocoa animation

对于开发人员文档中的NSAnimation,我找到了-addProgressMark方法。对于CABasicAnimation我没有发现任何相似之处。

CABasicAnimation * rotateLayer = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"];

当动画进度rotateLayer = 50%时,我想做点什么...... 我该怎么做?

2 个答案:

答案 0 :(得分:2)

您可以使用NSTimer来执行此操作。

由于animationDidStart:的{​​{1}}委托方法(CAAnimation继承自reference),您可以知道动画的开始时间。

由于您知道动画持续多长时间(您设置动画的持续时间),因此一旦动画达到其持续时间的50%,您就可以执行任何操作。

我的2美分:)

答案 1 :(得分:0)

我认为更优雅的方法是拥有两个动画。你可以通过第一个完成处理程序顺序启动它们,或者在开始时通过CATransaction注册它们(延迟下半部分动画),然后再使用第一个完成处理程序来执行你的中途逻辑。 / p>

至少在这种情况下,您的代码会得到关注和本地化。