У меня есть этот кусок кода, который отлично работает в одном из моих других проектов, где я достигаю эффекта «строба» текста, мигающего от черного до белого на петле. Когда я копировал и вставлял его в один из моих проектов, CompletionBlock срабатывает немедленно, игнорируя продолжительность анимации. Что может быть причиной?CATransaction CompletionBlock Firing Immediately
- (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];
}
С первого взгляда, похоже, он просто изменит текст на черный. Как мне заставить его перейти от черного к белому и наоборот на петлю? Есть ли настройка блока завершения? Кроме того, где определена продолжительность? Благодарю. –
@Kevin_TA: 'CATransition' соответствует' CAMediaTiming', поэтому вы можете установить продолжительность и еще что-то там. Что касается использования цикла, возможно, просто настроили 'NSTimer'? –
@Kevin_TA: Также возможно, что сам «CATransition» будет использоваться с «CATransaction» и, таким образом, позволяет использовать блоки завершения, но я никогда не пробовал это сам, поэтому я не знаю, будет ли это работать , –