【问题标题】:how to stop core animation?如何停止核心动画?
【发布时间】:2009-10-14 14:15:56
【问题描述】:

我现在在特定条件下使用核心动画为按钮设置动画我想停止该动画如何停止动画?

这里是动画按钮的方法

-(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];
}

【问题讨论】:

  • 在第一次扫描时,我认为这个问题是“如何停止火化”:-)

标签: objective-c xcode iphone-sdk-3.0 core-animation


【解决方案1】:

来自Core Animation Programming Guide

启动和停止显式动画

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

【讨论】:

    【解决方案2】:

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

    但是,如果您这样做,图层应该恢复到其动画前状态。要使图层停止并保留其当前值的动画属性,您需要执行我在this answer 中描述的操作:获取动画层的presentationLayer,读取动画属性的当前值,将该值设置为动画层,然后才删除动画。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-22
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多