如何检查是否已应用并运行CABasicAnimation?

ope*_*rog 2 iphone core-animation ios

我创建一个CABasicAnimation并将其应用于这样的层:

[rotatedLayer addAnimation:rotationAnimation forKey:@"transform.rotation.z"];
Run Code Online (Sandbox Code Playgroud)

如何检查rotateLayer是否已经在transform.rotation.z路径上设置了动画?

Ole*_*ann 7

检查返回值[rotatedLayer animationForKey:@"transform.rotation.z"];.


小智 5

您可以设置一个 ivar,例如:

BOOL _animationRunning;
Run Code Online (Sandbox Code Playgroud)

并将动画的委托设置为您所在的类并实现以下功能:

animationDidStart:(CAAnimation *)anim
animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
Run Code Online (Sandbox Code Playgroud)

并在这些回调中翻转布尔值。Ole 的方法也有效,但是如果您将 beginTime 设置为延迟或将动画包装在 CAAnimationGroup 中以创建延迟(重复之前的 CAKeyframeAnimation 延迟),那么您获得的 animationForKey 也会返回该动画,即使它不是' t实际上是“动画”。