Исчезать цвет фона от одного цвета к другому в UIView - PullRequest
5 голосов
/ 24 января 2011

Как мне поменять цвет фона в 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 Ответ

1 голос
/ 24 января 2011

Вам не нужно создавать два UIView и fade - зачем беспокоиться о том, чтобы иметь дополнительный лишний вид, висящий вокруг, когда сам атрибут color является анимируемым?

Вы можете использовать CAAnimation, как показано выше, но вместо настройки непрозрачности двух видов просто отрегулируйте backgroundColor одного.

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

...