立即调用 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 没有被调用

animationDidStop:finished: 未调用

核心动画 - 未调用 animationDidStop

iOS - [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)] 调用太快了

未使用 NSAnimationContext 调用 CAAnimation animationDidStop