2014-03-01 81 views
0

可以说我在我的背景中有价值,这是永久性变化的。我希望它能够改变背景颜色,并有一个很好的衰落。根据升序值在屏幕上更改颜色

这就是我目前做: 我有一个定时器,它可以读取值,每一秒,然后选择新的颜色,并通过CAAnimation淡出这样的:

CABasicAnimation* fade = [CABasicAnimation animationWithKeyPath:@"backgroundColor"]; 
fade.fromValue = (id)self.view.backgroundColor.CGColor; 
[self.view setBackgroundColor:changeColor]; 
fade.toValue = (id)changeColor.CGColor; 
[fade setDuration:0.5]; 
[self.view.layer addAnimation:fade forKey:@"fadeAnimation"]; 

这工作其实OK因为动画短于实际的计时器,所以看起来不错,但有点草率。

如何在没有计时器的情况下永久并平滑地完成此操作?

+0

为什么你没有使动画持续时间与定时器时间相同? – Wain

+0

目前尚不清楚你想要做什么。你为什么不包含你的NSTimer选择器的代码。 –

回答

0

我会建议使用UIView动画。您可以使用像animateKeyframesWithDuration:delay:options:animations:completion:这样的方法为单个颜色过渡设置动画,并在完成块中触发下一个颜色更改。为了避免在完成方法中嵌套动画块很多层次,我有时会使用一个实例变量来跟踪步计数器,并且完成块只是递增步计数器并再次调用该方法。

如果您可以将应用程序限制为iOS 7,则可以使用新的关键帧动画来制作整个系列的动画。

ShinobiControls有一个演示项目,它完全符合你的需求。检查此链接:

http://www.shinobicontrols.com/blog/posts/2013/10/04/ios7-day-by-day-day-11-uiview-key-frame-animations