当我们需要组合多个UIView动画的时候,可以使用UIView.animate嵌套,也可以使用keyframe完成,这个是ios7+支持的。
self.badgeView.transform = CGAffineTransform(scaleX: 0.01, y: 0.01) self.badgeView.alpha = 0 UIView.animateKeyframes(withDuration: 5, delay: 0.0, options: [], animations: { UIView.addKeyframe(withRelativeStartTime: 0, relativeDuration: 2.0/3.0) { self.badgeView.transform = CGAffineTransform(scaleX: 1.3, y: 1.3) self.badgeView.alpha = 1 } UIView.addKeyframe(withRelativeStartTime: 2.0/3.0, relativeDuration: 1.0/3.0) { self.badgeView.transform = CGAffineTransform(scaleX: 1.0, y: 1.0) } }) { (finished) in /// finish self.badgeView.transform = CGAffineTransform.identity }
如上,我们设置了1个初始状态和2个关键帧,会将动画自动切分为2个阶段:
0 ~ 2/3 时间 从零到 1.3倍大小(+alpha从0 到1)
2/3 ~ 1时间 从1.3倍到1倍
注意这里回调里面的时间都是相对时间,1是总和,不要搞错,累加和也不要超过。