如何在UIView animateKeyFramesWithDuration中旋转和更改颜色

时间:2015-03-12 20:18:48

标签: swift uiview uiviewanimation uiactivityindicatorview

我有一个正确旋转的旋转器,但我也想让它在旋转时改变彩虹色。如何在关键帧动画中将旋转动画与颜色更改动画结合使用?我正在使用PaintCode将资源渲染为矢量艺术,因此我可以用任何颜色绘制微调器。

   func animate(){
        UIView.animateKeyframesWithDuration(2.0, delay: 0, options:.CalculationModeLinear | .Repeat, animations: { () -> Void in
            UIView.addKeyframeWithRelativeStartTime(0.0, relativeDuration: 0.333333, animations: { () -> Void in
                let rotation = (CGFloat) (2.0/3.0 * M_PI)
                self.spinner.transform = CGAffineTransformMakeRotation(rotation)
            })
            UIView.addKeyframeWithRelativeStartTime(0.333333, relativeDuration: 0.333333, animations: { () -> Void in
                let rotation = (CGFloat) (4.0/3.0 * M_PI)
                self.spinner.transform = CGAffineTransformMakeRotation(rotation)
            })
            UIView.addKeyframeWithRelativeStartTime(0.666667, relativeDuration: 0.333333, animations: { () -> Void in
                let rotation = (CGFloat) (0)
                self.spinner.transform = CGAffineTransformMakeRotation(rotation)
            })

        }) { (finished) -> Void in
            //complete
        }
    }

1 个答案:

答案 0 :(得分:0)

尝试更改微调器的tintColor。如果你想实现一个彻底的变化,那就是彩虹色"我不认为UIView.animate-会达到目的。我想使用基于计时器的动画将是一个更好的解决方案,因为你必须添加大量的UIView.addKeyframeWithRelativeStartTime调用。你可能不知道确切的数字。此外,如果你想添加一个新的颜色,你需要重新计算时间并添加一个新的调用,这是...让我们说不是一个好的代码方式:) 你能给我们举个类似于你想要实现的东西的例子吗?