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