移除 CoreGraphics 动画

Remove CoreGraphics Animation

如何使用 animationDidStop 删除动画?

我应用动画

let animationTwo = CABasicAnimation(keyPath: "opacity")
animationTwo.delegate = self
animationTwo.fromValue = 0.0
animationTwo.toValue = 1.0
animationTwo.duration = 1.0
animationTwo.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut)
myView.layer.add(animationTwo, forKey: "fade")

然后尝试删除它

func animationDidStop(_ anim: CAAnimation, finished flag: Bool) {
    if anim == myView.layer.animation(forKey: "fade") {
        myView.layer.removeAnimation(forKey: "fade")
    }
}

但是 anim == myView.layer.animation(forKey: "fade") 永远不会解析为真。

完成后如何删除动画?

CAAnimation 有一个名为 isRemovedOnCompletion 的 属性,默认为 true

这意味着您的动画完成后将从渲染树中删除。我想这就是为什么 anim == myView.layer.animation(forKey: "fade") 没有解析为 true 因为它已经被删除了。