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

时间:2010-09-13 05:08:26

标签: iphone cocoa core-animation

我有一个在第一次调用时完美运行的动画。但是,如果我想使用相同的代码再次为同一个图层设置动画,则会立即完成,并在animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag值为flag的代理上调用NO

以下是添加动画的代码:

  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中可见。

2 个答案:

答案 0 :(得分:1)

原来是在回调中设置view.hidden = YES并从父级viewWillApear调用动画代码的组合。一旦我将动画代码调用移动到父代viewDidApear中,事情就开始按预期运行了。

答案 1 :(得分:0)

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

animationOpacity.removedOnCompletion = NO;