Срабатывание CATransactionBlock немедленно
У меня есть этот кусок кода, который отлично работает в одном из моих других проектов, где я добиваюсь эффекта стробирования текста, мигая с черного на белый в цикле. Когда я скопировал и вставил его в другой из моих проектов, CompletionBlock срабатывает немедленно, игнорируя продолжительность анимации. Что может быть причиной?
- (void)animateTextFlashingWhite
{
[CATransaction begin];
[CATransaction setCompletionBlock:^{
[self animateTextFlashingBlack];
NSLog(@"finished white");
}];
[CATransaction setValue:[NSNumber numberWithFloat:0.7f] forKey:kCATransactionAnimationDuration];
self.myStrobeLabel.textColor = [UIColor whiteColor];
[CATransaction commit];
}
- (void)animateTextFlashingBlack
{
[CATransaction begin];
[CATransaction setCompletionBlock:^{
[self animateTextFlashingWhite];
NSLog(@"finished black");
}];
[CATransaction setValue:[NSNumber numberWithFloat:0.7f] forKey:kCATransactionAnimationDuration];
self.myStrobeLabel.textColor = [UIColor blackColor];
[CATransaction commit];
}
1 ответ
Я не думаю textColor
является анимируемым.
Если вы просто хотите кроссфейд, вы можете сделать это, добавив CATransition
возражать против метки.
[self.myStrobeLabel.layer addAnimation:[CATransition animation] forkey:@"transition"];
self.myStrobeLabel.textColor = [UIColor blackColor];