Срабатывание 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];
Другие вопросы по тегам