UIView animateWithDuration重新开始

时间:2015-04-17 11:29:43

标签: ios xcode swift uiviewanimation

我有一个简单的问题:)但我要求从stackoverflow社区中的优秀程序员那里获益。

我在viewDidAppear的源视图中使用UIView.animateWithDuration,动画开始如下,调用startTheStory():

override func viewDidAppear(animated: Bool) {

    if !animate {

        startTheStory()
    }
}

然后使用自定义segue查看目标视图的事务。

我的问题是当事务在源视图中启动动画时重启,所以我尝试通过以下代码停止它:

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

    self.view.layer.removeAllAnimations()
}

但它没有用。

我也尝试过prepareForSegue()但它没有用。

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:1)

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

并添加这些行

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

请记得导入QuartzCore/QuartzCore.h

你的动画明星的原因是

if !animate {

        startTheStory()
    }

总是在viewDidAppear方法中执行,因为" animate"每次视图要在屏幕上再次绘制时,都设置为false。 设置" animate" to" True"在viewWillDisappear中将再次重置为" False"当调用viewDidAppear时。所以尽量保持" animate"在应用委托中使用var global并设置值,这应该可以解决问题。