在iOS开发中,animationDidStop
方法是一个常用的动画结束后的回调方法。当我们使用多个CAAnimation
对象进行动画时,我们可以使用animationDidStop
方法来检测每个动画的结束。
首先,我们需要创建多个CAAnimation
对象,并为每个对象设置相应的动画属性。例如,我们可以创建一个旋转动画和一个缩放动画:
let rotationAnimation = CABasicAnimation(keyPath: "transform.rotation.z")
rotationAnimation.toValue = CGFloat.pi * 2.0
rotationAnimation.duration = 2.0
let scaleAnimation = CABasicAnimation(keyPath: "transform.scale")
scaleAnimation.toValue = 1.5
scaleAnimation.duration = 2.0
接下来,我们可以将这些动画添加到相应的CALayer
对象中:
let layer = view.layer
layer.add(rotationAnimation, forKey: "rotationAnimation")
layer.add(scaleAnimation, forKey: "scaleAnimation")
现在,我们需要实现animationDidStop
方法来检测动画的结束。我们可以使用CAAnimation
的代理方法来实现这个功能:
func animationDidStop(_ anim: CAAnimation, finished flag: Bool) {
if let key = anim.value(forKey: "key") as? String {
print("Animation \(key) stopped")
}
}
最后,我们需要将代理设置为当前对象,并为每个CAAnimation
对象设置代理:
layer.delegate = self
rotationAnimation.delegate = self
scaleAnimation.delegate = self
现在,每当一个动画结束时,animationDidStop
方法都会被调用,并打印出相应的动画名称。这样,我们就可以使用animationDidStop
方法来检测多个CAAnimation
对象的动画结束。
领取专属 10元无门槛券
手把手带您无忧上云