Fade background-color от одного цвета к другому в 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, за то, что помог всем узнать больше. :)


person johankj    schedule 24.01.2011    source источник
comment
Дубликат: http://stackoverflow.com/questions/518192/how-do-you-explicitly-animate-a-calayers-backgroundcolor   -  person Mads Mobæk    schedule 24.01.2011


Ответы (1)


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

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

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

person lxt    schedule 24.01.2011
comment
Я пытался сказать, что у меня один UIView. Проверю вашу ссылку. :) - person johankj; 24.01.2011