繁体   English   中英

UIView animateWithDuration重新开始

[英]UIView animateWithDuration start over

我有一个简单的问题:),但我想从Stackoverflow社区的优秀程序员中受益。

我在viewDidApp的源代码视图中使用UIView.animateWithDuration通过调用startTheStory()如下所示显示动画开始:

override func viewDidAppear(animated: Bool) {

    if !animate {

        startTheStory()
    }
}

然后,使用定制segue将视图事务与目标视图合并。

我的问题是事务在源视图中重新启动动画时重新开始,因此我尝试通过以下代码停止动画:

override func viewWillDisappear(animated: Bool) {
    animate = true

    self.view.layer.removeAllAnimations()
}

但这是行不通的。

我也尝试在prepareForSegue()中,但是它不起作用。

任何想法?

谢谢

删除此行self.view.layer.removeAllAnimations()

并添加这些行

[CATransaction begin]
[_backgroundView.layer removeAllAnimations]
[CATransaction commit]
[CATransaction flush]

记得导入QuartzCore/QuartzCore.h

您的动画出演的原因是

if !animate {

        startTheStory()
    }

总是在viewDidAppear方法中执行,因为每次视图将再次在屏幕上绘制时,“动画”都设置为false。 当调用viewDidAppear时,将viewWillDisappear中的“动画”设置为“真”将再次重置为“假”。 因此,尝试在应用程序委托中保持“ animate” var全局,并设置该值即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM