1

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

1 回答 1

2

我不认为textColor是动画。

如果您只是想要一个淡入淡出,您可以通过向CATransition标签添加一个对象来完成此操作。

[self.myStrobeLabel.layer addAnimation:[CATransition animation] forkey:@"transition"];
self.myStrobeLabel.textColor = [UIColor blackColor];
于 2013-03-18T22:46:40.050 回答