在UIView中将背景颜色从一种颜色淡化为另一种颜色

时间:2011-01-24 17:30:00

标签: iphone uiview uicolor caanimation cabasicanimation

如何在UIView中从一种背景颜色淡化为另一种颜色?

在javascript(jQuery)中,可以通过执行以下操作来完成:
$('body').animate({ backgroundColor: "#ff00ff"});

如果我将颜色转换为HSV会更容易吗?

编辑: 尝试使用CABasicAnimation进行操作,但由于未知原因它会闪烁白色。 :/

CABasicAnimation* fade = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
fade.fillMode = kCAFillModeForwards;
fade.removedOnCompletion = NO;
// fade.fromValue = (id)[self.view backgroundColor].CGColor;
fade.toValue = (id)[UIColor greenColor].CGColor;
[self.view.layer addAnimation:fade forKey:@"fade"];

然后我试图找到另一种方法,偶然发现“隐式动画”。下面的内容适用于第二种方法:

[UIView beginAnimations:@"fade" context:nil];
[UIView setAnimationDuration:1];
[[self view] setBackgroundColor: [UIColor greenColor]];
[UIView commitAnimations];

谢谢StackOverflow,帮助每个人学习更多知识。 :)

1 个答案:

答案 0 :(得分:1)

你不需要创建两个UIView和淡入淡出 - 为什么在颜色属性本身具有动画效果的情况下,还有一个多余的多余视图?

您可以使用如上所示的CAAnimation,但不要调整两个视图的不透明度,只需将backgroundColor调整为一个。

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Animation_Types_Timing/Articles/PropertyAnimations.html