iOS - 使用[layer removeAllAnimations]删除动画

时间:2011-11-10 04:02:45

标签: ios animation calayer

当我调用方法“labelDropped”时,我有一个简单的动画来制作我要停止的文本闪光。 这是动画代码:

- (void)blinkAnimation:(NSString *)animationID finished:(BOOL)finished target:(UIView *)target
{   
float speedFloat = .8;

[UIView beginAnimations:animationID context:target];
[UIView setAnimationDuration:speedFloat];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(blinkAnimation:finished:target:)]; 
if([target alpha] == 1.0f)
    [target setAlpha:0.0f];
else
    [target setAlpha:1.0f];
[UIView commitAnimations];    
}

在我的视图的init方法中调用此方法如下:

[self blinkAnimation:@"blinkAnimation" finished:YES target:infoLabel];

最后,我用来停止动画的代码,这是无效的。它是从名为“labelDropped”的单独方法调用的:

[self.layer removeAllAnimations];

我甚至尝试过:     [infoLabel.layer removeAllAnimations];

......但它也没有用。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

我的猜测是即使停止动画,也会调用完成处理程序。所以你最终再次开始动画。

检查已完成参数的值。如果完成==否,请不要再次启动动画。只需将其放在blinkAnimation:finished:target:的开头。

if (!finished) return;