0

目的是什么:按钮单击请求 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"];
}
4

1 回答 1

1

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

于 2012-01-12T20:06:01.960 回答