立即调用 animationDidStop 方法
Posted
技术标签:
【中文标题】立即调用 animationDidStop 方法【英文标题】:animationDidStop method called immediately 【发布时间】:2016-02-01 05:00:40 【问题描述】:我以前从未遇到过这个问题。我的 animationDidStop 方法在动画实际完成之前被调用。首先调用animationDidStart,然后立即调用animationDidStop。我尝试使用动画完成块来处理这个问题,但它仍然称动画立即完成。有人遇到过这个吗?我真的需要一点帮助。谢谢。
-詹姆斯
代码:
-(void) runAnimation
//Create an animation that rotates the tile
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
[animation setDuration:6];
[animation setFromValue:[NSNumber numberWithFloat:0]];
[animation setToValue:[NSNumber numberWithFloat:0.5*M_PI]];
[animation setDelegate:self];
animation.fillMode = kCAFillModeForwards;
animation.removedOnCompletion = NO;
[[self.view viewWithTag:100].layer addAnimation:animation forKey:@"solutionRotate"];
-(void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
if (theAnimation == [[self.view viewWithTag:100].layer animationForKey:@"solutionRotate"])
//test
NSLog (@"test");
【问题讨论】:
您的代码示例中是否存在错误?您添加“animateStuff”而不是“动画” 您是否尝试过使用 CATransaction 完成块? 【参考方案1】:如果图层不是任何图层树的一部分,则动画将立即结束,因为屏幕上没有任何实际动画。确保将动画视图添加到可见的视图层次结构中。
【讨论】:
以上是关于立即调用 animationDidStop 方法的主要内容,如果未能解决你的问题,请参考以下文章
CABasicAnimation - 未调用 animationDidStop
animationDidStop:finished: 未调用
iOS - [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)] 调用太快了