【问题标题】: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 路径上设置动画?

【问题讨论】:

    标签: iphone ios core-animation


    【解决方案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 中减少。如果为零 - 不再运行动画 =]
    猜你喜欢
    • 1970-01-01
    • 2021-04-09
    • 2016-08-07
    • 2012-09-18
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    相关资源
    最近更新 更多