图层动画第一次正常工作,但不在第二次相同的调用

问题描述:

我有一个完美的第一次调用的动画。但是,如果我想再次使用相同的代码对同一图层进行动画处理,则会立即完成,并在flagNO的代理上调用animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag图层动画第一次正常工作,但不在第二次相同的调用

这里是添加动画代码:

imageView.hidden = NO; 

    CAKeyframeAnimation* animationOpacity = 
    [CAKeyframeAnimation animationWithKeyPath:@"opacity"]; 
    ... 

    animationOpacity.duration = 2.0; 
    animationOpacity.removedOnCompletion = YES; 
    animationOpacity.delegate = self; 

    [imageView.layer addAnimation:animationOpacity forKey:@"someKey"]; 

,这是代表行动:

-(void) animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag { 
    imageView.hidden = YES; 
} 

BTW,最初imageView在XIB可见。

是否在第二次调用之前再次添加动画?如果你不是,那么你应该设置removedOnCompletion = NO

animationOpacity.removedOnCompletion = NO; 
+0

代码行为与removedOncompletion'YES'或'NO'相同。我再次添加动画,运行完全相同的代码,包括'addAnimation:...' – user199092 2010-09-13 05:16:17

可谓是从父的viewWillApear设置回调view.hidden = YES并调用动画代码的组合。一旦我将动画代码调用转换为父代的viewDidApear,事情就会像预期的那样开始。