iOS动画之CAAnimationDelegate

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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值