我有这段代码可以完美地在我的其他项目之一中工作,在这些项目中,我实现了文本的“频闪”效果,循环中的文本从黑变白。当我将其复制并粘贴到另一个项目中时,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];
关于iphone - CATransaction CompletionBlock立即触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15488380/