このコードは、ループ上でテキストが黒から白に点滅する「ストロボ」効果を実現している他のプロジェクトの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];
}