为什么CATextLayer对象具有不一致的CAKeyFrameAnimation?

时间:2012-01-04 00:44:38

标签: objective-c cakeyframeanimation catextlayer

意图是什么:     单击按钮会请求CATextLayer对象的字符串值设置动画,直到被另一个按钮单击请求停止为止。有两个单独的按钮负责这些操作,因此操作不会混淆。

实际发生的事情: 在播放请求中,有几个实例,textLayer的字符串没有动画,并且其字符串值保持不变,同时显示指定的“0”(如上所示)。在这种情况下,动画永远不会被初始化并分配给CATextLayer对象。 但是,错误并不一致。当CATextLayer对象显示相应的字符串值时,还有几个实例。如果连续单击该按钮,则成功率约为看到CATextLayer对象为其字符串值设置动画的70%。是否存在绕过addAnimation方法代码行的任何场景?

感谢您提出的所有帮助。提前谢谢!

-(IBAction)playText:(id)sender{
    //textLayer object is instantiated elsewhere in the class
    textLayer.frame = CGRectMake(0, 0, 128, 16);
    textLayer.fontSize = 14;
    textLayer.backgroundColor = [UIColor clearColor].CGColor;
    textLayer.foregroundColor = [UIColor yellowColor].CGColor;
    textLayer.string = @"0";
    [self.layer addSubLayer:textLayer];

    CAKeyframeAnimation *textAnimation = [CAKeyframeAnimation animationWithKeyPath:@"string"];
    textAnimation.values = values; 
    textAnimation.repeatCount = HUGE_VALF;
    textAnimation.keyTimes = intervals; 
    textAnimation.calculationMode = kCAAnimationLinear;
    textAnimation.duration = 6;
    [textLayer addAnimation:textAnimation forKey:@"string"];
}

-(IBAction)stopText:(id)sender{
    [textLayer removeAnimationForKey:@"string"];
}

1 个答案:

答案 0 :(得分:1)

必须为每个关键帧动画重新​​初始化对象,此外还要重新添加到它的父子层。