如何停止核心动画?

Rah*_*yas 8 xcode core-animation objective-c iphone-sdk-3.0

我正在动画一个按钮使用核心动画现在在某种情况下,我想停止该动画我如何停止动画?

这是为按钮设置动画的方法

-(void)animateButton:(UIButton *)btnName
{
    CABasicAnimation *pulseAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
    pulseAnimation.duration = .5;
    pulseAnimation.toValue = [NSNumber numberWithFloat:1.1];
    pulseAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    pulseAnimation.autoreverses = YES;
    pulseAnimation.repeatCount = FLT_MAX;

    [btnName.layer addAnimation:pulseAnimation forKey:nil];
}
Run Code Online (Sandbox Code Playgroud)

nal*_*all 23

来自Core动画编程指南

启动和停止显式动画

您可以通过向目标图层发送addAnimation:forKey:消息来启动显式动画,并将动画和标识符作为参数传递.一旦添加到目标图层,显式动画将一直运行,直到动画完成,或者从图层中删除.用于向图层添加动画的标识符也用于通过调用removeAnimationForKey:来停止它.您可以通过向图层发送removeAllAnimations消息来停止图层的所有动画.


Bra*_*son 7

正如nall指出的那样,您只需要为动画指定一个键(字符串等),然后在图层上使用-removeAnimationForKey:来删除该特定动画.

但是,如果执行此操作,图层应恢复到其动画前状态.要让图层在动画属性保持其当前值的情况下停止,您需要执行我在此答案中描述的内容:获取动画图层的presentationLayer,读取动画属性的当前值,将该值设置为动画图层,然后才删除动画.