Я пытаюсь оживить цвет текста на UILabel, чтобы набрать импульс: [Черный] на [Белый] на [Черный] и повторить.
- (void)timerFlash:(NSTimer *)timer {
[[self navTitle] setTextColor:[[UIColor whiteColor] colorWithAlphaComponent:0.0]];
[UIView animateWithDuration:1
delay:0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{[[self navTitle] setTextColor:[[UIColor whiteColor] colorWithAlphaComponent:1.0]];}
completion:nil];
}
.
[self setFadeTimer:[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerFlash:) userInfo:nil repeats:YES]];
Во-первых, я не уверен в моем методе, мой план (как вы можете видеть выше) заключался в том, чтобы настроить блок анимации и вызвать его с помощью повторяющегося NSTimer до отмены.
Моя вторая проблема (как вы можете видеть выше) заключается в том, что я анимация от черного (альфа-0) до белого (альфа-1), но я не знаю, как снова окунуться в черное, так что анимация петли плавно
По сути, я хочу, чтобы цвет текста пульсировал на UILabel, пока пользователь не нажмет кнопку для продолжения.
EDIT_001:
У меня возникли проблемы, потому что вы не можете анимировать [UILabel setColor:], однако вы можете анимировать [UILabel setAlpha:], поэтому я собираюсь дать это.
EDIT_002:
- (void)timerFlash:(NSTimer *)timer {
[[self navTitle] setAlpha:0.5];
[UIView animateWithDuration:2
delay:0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{[[self navTitle] setAlpha:0.9];}
completion:nil];
}
Это работает (BTW: я хочу, чтобы он остановился, поэтому я подключил его к NSTimer, поэтому я могу отменить это), единственное, что это оживляет от midGray до NearWhite, а затем всплывает. Кто-нибудь знает, как я мог бы оживить от nearWhite до midGray, чтобы получить хороший плавный цикл?
EDIT_003: (Решение)
Код, предложенный Дейвом ДеЛонгом (см. ниже), действительно работает при изменении, чтобы использовать атрибут стиля прозрачности CALayer:
UILabel *navTitle;
@property(nonatomic, retain) UILabel *navTitle;
.
// ADD ANIMATION
CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"opacity"];
[anim setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[anim setFromValue:[NSNumber numberWithFloat:0.5]];
[anim setToValue:[NSNumber numberWithFloat:1.0]];
[anim setAutoreverses:YES];
[anim setDuration:0.5];
[[[self navTitle] layer] addAnimation:anim forKey:@"flash"];
.
// REMOVE ANIMATION
[[[self navTitle] layer] removeAnimationForKey:@"flash"];