根据升序值更改屏幕上的颜色

时间:2014-03-01 15:23:34

标签: ios iphone objective-c cocoa-touch

让我说我在永远改变的背景中有价值。我想让它改变背景颜色,褪色很好。

这就是我目前正在做的事情: 我有一个Timer,它每秒读取一次值,然后选择新颜色并通过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"];

这实际上可行,因为动画比实际的计时器短,所以它看起来不错但有点草率。

如果没有计时器,我该如何永久平稳地完成这项工作?

1 个答案:

答案 0 :(得分: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