UIView动画有时不播放(立即结束状态)

时间:2016-03-21 23:49:26

标签: ios objective-c swift animation

在我的应用程序中,我有一个摄像头和另一个视图控制器,我拍照时出现。当我拍摄照片时,当我移动相机太快时,动画停止工作(甚至将segues返回到相机之前的原始UITabBar)。我不确定这是否与CPU使用率有关,这里似乎没有模式。有时候,只拍照就会让它表现得这样。我的动画主要是这个:

UIView.animateWithDuration(0.8, delay: 0, options: UIViewAnimationOptions.CurveEaseOut, animations: { () -> Void in                      

//buttons.alpha = 1 or 0
//buttonA.center.x += 100

}, completion: nil)
在ViewDidLoad中,

在动画中只有几个alpha变化值。大多数其他动画块都是单击按钮时。最有趣的是,如果我关闭视图控制器并回到相机,有时行为仍然存在,有时不会,就好像根本没有模式一样。当行为持续存在时,它甚至会影响相机视图控制器本身的segues(以及tabBar的其他部分,这些是应用程序的主视图 - 例如在Instagram中)。因此,它会影响整个应用程序。你们认为这种奇怪行为的原因是什么? Objective-C代码也很受欢迎。

2 个答案:

答案 0 :(得分:1)

您不应该在视图控制器生命周期的ViewDidLoad:部分调用动画代码。此时视图已完成加载,但它可能已经或可能没有出现在屏幕上。您可以在其中插入动画viewWillAppear:,当视图出现时,它将执行动画。

答案 1 :(得分:0)

你试过viewDidApear吗?我不确定视图是否实际上已添加到viewDidLoad或viewWillAppear中的视图层次结构中。唯一的缺点是你不能假设它只会在viewController的生命周期中调用一次。