CAAnimationDelegate
你的应用程序可以实现响应动画启动和停止的方法。
声明
protocol CAAnimationDelegate
当动画开始或结束时,可以使用动画委托来执行额外的逻辑。例如,你可能想要在淡出动画完成后从父层中移除一个层。
以下代码显示了从实现CAAnimationDelegate的类中获取的代码,并在其层中添加了一个名为sublayer的层。fadeOut函数为子图层的不透明度设置动画,一旦动画完成,animationDid Stop(_:finished:)将其从其上层移除。
func fadeOut() {
let fadeOutAnimation = CABasicAnimation()
fadeOutAnimation.keyPath = "opacity"
fadeOutAnimation.fromValue = 1
fadeOutAnimation.toValue = 0
fadeOutAnimation.duration = 0.25
fadeOutAnimation.delegate = self
sublayer.add(fadeOutAnimation, forKey: "fade")
}
func animationDidStop(_ anim: CAAnimation, finished flag: Bool) {
sublayer.removeFromSuperlayer()
}
委托事件
1、animationDidStart(_😃
告诉委托动画已经开始。
2、animationDidStop(_:finished:)
告诉委托动画已经结束。
参数:
anim:已经结束的CAAnimation对象。
flag:指示动画是否在持续时间结束时完成。
动画可能已经结束了,因为它已经完成了它的活动持续时间,或者因为它已经从它所附加的层被删除了。如果动画在未被移除的情况下到达了持续时间的末尾,标志为true。