2011-01-24 126 views
5

如何从UIView中的一种背景颜色淡出到另一种颜色?在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

重复:http://stackoverflow.com/questions/518192/how-do-you-explicitly-animate-a-calayers-backgroundcolor – 2011-01-24 17:43:07

回答

1

您不需要创建两个UIView并淡入淡出 - 为什么还要在颜色属性本身为动画时悬挂一个额外的多余视图?

如上所示,您可以使用CAAnimation,但不是调整两个视图的不透明度,而只是调整其中一个的背景颜色。

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

+0

我想说,我有一个UIView的。我会检查你的链接。 :) – johankj 2011-01-24 18:18:58

相关问题