图层动画第一次正常工作,但不在第二次相同的调用
问题描述:
我有一个完美的第一次调用的动画。但是,如果我想再次使用相同的代码对同一图层进行动画处理,则会立即完成,并在flag
值NO
的代理上调用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;
答
可谓是从父的viewWillApear
设置回调view.hidden = YES
并调用动画代码的组合。一旦我将动画代码调用转换为父代的viewDidApear
,事情就会像预期的那样开始。
代码行为与removedOncompletion'YES'或'NO'相同。我再次添加动画,运行完全相同的代码,包括'addAnimation:...' – user199092 2010-09-13 05:16:17