意图是什么: 单击按钮会请求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"];
}
答案 0 :(得分:1)
必须为每个关键帧动画重新初始化对象,此外还要重新添加到它的父子层。