CATransaction CompletionBlock立即触发



我有这段代码,在我的一个其他项目中,我实现了一个"频闪"效果的文本闪烁从黑色到白色的循环。当我将其复制并粘贴到我的另一个项目中时,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];
}

我不认为textColor是可动画的。

如果你只是想要一个交叉渐变,你可以通过在标签中添加一个CATransition对象来实现。

[self.myStrobeLabel.layer addAnimation:[CATransition animation] forkey:@"transition"];
self.myStrobeLabel.textColor = [UIColor blackColor];

最新更新