我有一个简单的问题:)但我要求从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()但它没有用。
有什么想法吗?
由于
答案 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并设置值,这应该可以解决问题。