推动视图控制器无法动画

时间:2016-04-18 14:23:40

标签: ios swift animation uikit segue

问候语,

我正在努力解决一个项目,因为UITableViewController(位于导航控制器中)和自定义UIViewController之间的隔离不是动画。

Storyboard中的复选框清楚地显示“动画”,类型为“显示(例如推送)”。然而,当执行segue时,没有动画。经过一些测试后,我发现手动调用UINavigationController pushViewController(destination, animated: true) 动画。

目标视图控制器包含一些可以进行自定义绘制的视图。

我可能做错了什么?

干杯,

亚历山大。

1 个答案:

答案 0 :(得分:1)

@AlexandreCassange和我设法在聊天中找到了问题,但是对于那些在这里找到类似问题的人来说是解决方案:

问题是当viewController被加载时(在调用viewDidAppear()之前),一些用于布局CALayer的代码花费的时间太长并且有效地阻止了动画。

调试此问题的过程如下:

检查在viewDidAppear()之前运行的任何可能需要很长时间并将其注释掉的代码,然后检查动画是否正常工作。一次执行一个代码块,以便您可以准确找到违规代码的位置。亚历山大就是这样找到的。

或者,使用Instruments(时间分析器)检查在目标viewController初始化期间发生的任何长时间运行的代码。

有时虽然这可能会发生,因为viewControllers初始化很复杂,而且每个单独的代码块运行相对较快,但这个过程太慢了。在这种情况下,使用时间分析器来优化初始化。我建议观看WWDC视频Profiling In-Depth