Анимация оттенка UIImageView - PullRequest
2 голосов
/ 16 декабря 2009

Аналогично этому предыдущему вопросу , я хочу применить оттенок произвольного цвета к произвольному изображению (a UIImageView). Однако я хочу, чтобы оттенок исчезал в течение N секунд, чтобы иметь эффект «пульса». Я буду запускать пульс каждые M секунд.

Хотя я думаю, что могу сменить наивное решение, используя NSTimer для изменения оттенка, я думаю, что, возможно, я смогу использовать некоторые из базовых сред анимации, чтобы иметь гораздо более элегантное (и эффективное) решение. Однако я не очень знаком с Core Animation.

Возможно ли создать такой "импульс" с помощью Core Animation? Если да, то как?

1 Ответ

1 голос
/ 16 декабря 2009

Если вы планируете использовать Core Animation, подход будет отличаться от того, который был продемонстрирован в вашей ссылке на предыдущий вопрос SO. Вместо этого создайте слой, который использует цвет, который вы ищете для оттенка, а затем анимируйте непрозрачность этого слоя. Примерно так:

CALayer *tintLayer = [CALayer layer];

// Center the layer on the view
[tintLayer setBounds:[imageView bounds]];
[tintLayer setPosition:CGPointMake([imageView bounds].size.width/2.0, 
                                   [imageView bounds].size.height/2.0)];

// Fill the color
[tintLayer setBackgroundColor:
           [[UIColor colorWithRed:0.5 green:0.5 blue:0.0 alpha:1.0] CGColor]];
[tintLayer setOpacity:0.5];
[[imageView layer] addSublayer:tintLayer];

// Add the animation
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"opacity"];
[animation setFromValue:[NSNumber numberWithFloat:0.5]];
[animation setToValue:[NSNumber numberWithFloat:0.0]];
// Animate back to the starting value automatically
[animation setAutoreverses:YES];
// Animate over the course of 5 seconds.
[animation setDuration:5.0];

[tintLayer addAnimation:animation forKey:@"opacity"];

Единственный вопрос, в котором я не уверен, заключается в том, будет ли он работать так же, поскольку мы не указываем режим наложения в слое оттенка. Мне придется посмотреть и посмотреть, какое смешивание происходит по умолчанию с CA.

С уважением.

ОБНОВЛЕНИЕ: Найдена еще одна запись SO , в которой говорится, что смешивание в CA зависит от свойства "непрозрачного" слоя.

...