iphone - CATransaction CompletionBlock 立即触发

标签 iphone ios caanimation catextlayer catransaction

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

相关文章:

iphone - 同时播放两个声音

iphone - 在 UITableView 中以编程方式移动带动画的行

ios - 在 Storyboard 中使用 viewController 类的一个实例

ios - 添加减速和加速以缩放动画

ios - 为什么 UISlider 的自定义缩略图会像素化? (里面的图片和代码)

ios - 如何将 Swift REPL 与 iOS SDK 一起使用

ios - 如何使用 Xamarin iOS 共享 URL

ios - 立即调用 CATransaction 完成

ios - 使用 CABasicAnimation(CAAnimation) 自定义交互过渡

iphone - 从 iPhone 摄像头创建直播并将其托管在网页上