对于开发人员文档中的NSAnimation
,我找到了-addProgressMark
方法。对于CABasicAnimation
我没有发现任何相似之处。
CABasicAnimation * rotateLayer = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"];
当动画进度rotateLayer
= 50%时,我想做点什么......
我该怎么做?
答案 0 :(得分:2)
您可以使用NSTimer
来执行此操作。
由于animationDidStart:
的{{1}}委托方法(CAAnimation
继承自reference),您可以知道动画的开始时间。
由于您知道动画持续多长时间(您设置动画的持续时间),因此一旦动画达到其持续时间的50%,您就可以执行任何操作。
我的2美分:)
答案 1 :(得分:0)
我认为更优雅的方法是拥有两个动画。你可以通过第一个完成处理程序顺序启动它们,或者在开始时通过CATransaction注册它们(延迟下半部分动画),然后再使用第一个完成处理程序来执行你的中途逻辑。 / p>
至少在这种情况下,您的代码会得到关注和本地化。