关键帧动画期间更改不透明度Swift

时间:2016-07-19 21:58:10

标签: ios swift swift2 uiviewanimation

我试图动画几个圆圈并同时改变它们的不透明度。

        UIView.animateKeyframesWithDuration(2, delay: 0, options: .Repeat, animations: {
        UIView.addKeyframeWithRelativeStartTime(0, relativeDuration: 0.5, animations: {
            self.innerRingView.alpha = 1
        })
        UIView.addKeyframeWithRelativeStartTime(0.5, relativeDuration: 0.5, animations: {
            self.innerRingView.alpha = 0
            self.middleRingView.alpha = 1
        })
        UIView.addKeyframeWithRelativeStartTime(1, relativeDuration: 0.5, animations: {
            self.middleRingView.alpha = 0
            self.outterRingView.alpha = 1
        })
        UIView.addKeyframeWithRelativeStartTime(1.5, relativeDuration: 0.5, animations: {
            self.outterRingView.alpha = 0
        })
        }, completion: nil)

出于某种原因,它永远不会进入第二个动画:

UIView.addKeyframeWithRelativeStartTime(1, relativeDuration: 0.5, animations: {
        self.middleRingView.alpha = 0
        self.outterRingView.alpha = 1
    })

因此,我的动画无效。 innerRingView永远不会回到0不透明度,并且outterRingView永远不会出现(默认情况下所有视图都设置为0 alpha。)

这里似乎有什么问题?

1 个答案:

答案 0 :(得分:3)

问题似乎与您的关键帧相对开始时间

有关
UIView.addKeyframeWithRelativeStartTime

必须在0到1的范围内,其中0表示整个动画的开始,1表示整个动画的结束。例如,对于持续时间为两秒的动画,指定开始时间为0.5会导致动画在整个动画开始后的一秒钟内开始执行。