Базовая анимация - анимация не работает - PullRequest
1 голос
/ 09 апреля 2011

Я пытаюсь использовать этот код для анимации цвета фона CALayer:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
animation.duration = 0.3;
animation.fromValue = (id)[backgroundLayer backgroundColor];
animation.toValue = (id)[[UIColor redColor] CGColor];
[backgroundLayer addAnimation:animation forKey:@"animateBackgroundColor"];

По какой-то причине это ничего не делает. Просто используя:

[backgroundLayer setBackgroundColor:[[UIColor redColor] CGColor]];

работает (хотя и без анимации) и использует:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"opacity"];
animation.duration=0.3;
animation.fromValue = [NSNumber numberWithFloat:1.0];
animation.toValue = [NSNumber numberWithFloat:0.0];
[backgroundLayer addAnimation:animation forKey:@"animateOpacity"];

тоже работает (с анимацией).

Почему я не могу анимировать цвет фона?

РЕДАКТИРОВАТЬ: Проблема связана с тем, что мой backgroundColor создается с изображением шаблона (используя реализацию UIImage ... Использование сплошных цветов работает). Я все еще ищу ответ на эту проблему.

1 Ответ

3 голосов
/ 10 апреля 2011

Базовая анимация работает с использованием интерполяции - вычисление промежуточных значений между указанными вами ключевыми значениями. Если это анимация ключевого кадра, она интерполируется между числом (n) значений в массиве значений. Если это базовая анимация, она интерполирует между двумя значениями - вашими начальными и конечными значениями. CA может очень хорошо рассчитать два сплошных цвета, так как они просто представлены значениями с плавающей точкой RGBA, но как это будет интерполировать значения между изображениями? Это должно было бы сделать какой-то вид морфинга, на который я не верю, что способен. Если вам нужен эффект морфинга, вам, вероятно, лучше переходить между фоновыми изображениями в представлении. Эффект по умолчанию - эффект перекрестного затухания / растворения. Это может быть не совсем то, что вы ищете, но это может приблизить вас.

С уважением.

...