使用keyframe实现UIView的组合动画

当我们需要组合多个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是总和,不要搞错,累加和也不要超过。

Leave a Reply

Your email address will not be published.