我有一个在第一次调用时完美运行的动画。但是,如果我想使用相同的代码再次为同一个图层设置动画,则会立即完成,并在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中可见。
答案 0 :(得分:1)
原来是在回调中设置view.hidden = YES
并从父级viewWillApear
调用动画代码的组合。一旦我将动画代码调用移动到父代viewDidApear
中,事情就开始按预期运行了。
答案 1 :(得分:0)
您是否在再次调用动画之前再次添加动画?如果你不是那么你应该设置removedOnCompletion = NO
animationOpacity.removedOnCompletion = NO;