2011-01-24 125 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

相關問題