如何检查 CABasicAnimation 是不是已应用并正在运行?
Posted
技术标签:
【中文标题】如何检查 CABasicAnimation 是不是已应用并正在运行?【英文标题】:How to check if an CABasicAnimation is applied and running already?如何检查 CABasicAnimation 是否已应用并正在运行? 【发布时间】:2011-09-18 12:12:46 【问题描述】:我创建了一个 CABasicAnimation 并将其应用到这样的图层:
[rotatedLayer addAnimation:rotationAnimation forKey:@"transform.rotation.z"];
如何检查 rotateLayer 是否已经在 transform.rotation.z 路径上设置动画?
【问题讨论】:
【参考方案1】:检查[rotatedLayer animationForKey:@"transform.rotation.z"];
的返回值。
【讨论】:
它的快速转换是-rotatedLayer.animation(forKey: "transform.rotation.z")【参考方案2】:您可以设置一个ivar,例如:
BOOL _animationRunning;
并将动画的委托设置为您所在的类并实现功能:
animationDidStart:(CAAnimation *)anim
animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
并在这些回调中翻转布尔值。 Ole 的方法也可以,但是如果您将 beginTime 设置为具有延迟或将动画包装在 CAAnimationGroup 中以创建延迟(例如CAKeyframeAnimation delay before repeating),那么即使不是实际上是“动画”。
【讨论】:
我使用了一个计数器,它在animationDidStart 中增加,在animationDidStop 中减少。如果为零 - 不再运行动画 =]以上是关于如何检查 CABasicAnimation 是不是已应用并正在运行?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 CABasicAnimation 更改 Frame.size