问候语,
我正在努力解决一个项目,因为UITableViewController
(位于导航控制器中)和自定义UIViewController
之间的隔离不是动画。
Storyboard中的复选框清楚地显示“动画”,类型为“显示(例如推送)”。然而,当执行segue时,没有动画。经过一些测试后,我发现手动调用UINavigationController
pushViewController(destination, animated: true)
不动画。
目标视图控制器包含一些可以进行自定义绘制的视图。
我可能做错了什么?
干杯,
亚历山大。
答案 0 :(得分:1)
@AlexandreCassange和我设法在聊天中找到了问题,但是对于那些在这里找到类似问题的人来说是解决方案:
问题是当viewController被加载时(在调用viewDidAppear()之前),一些用于布局CALayer的代码花费的时间太长并且有效地阻止了动画。
调试此问题的过程如下:
检查在viewDidAppear()之前运行的任何可能需要很长时间并将其注释掉的代码,然后检查动画是否正常工作。一次执行一个代码块,以便您可以准确找到违规代码的位置。亚历山大就是这样找到的。
或者,使用Instruments(时间分析器)检查在目标viewController初始化期间发生的任何长时间运行的代码。
有时虽然这可能会发生,因为viewControllers初始化很复杂,而且每个单独的代码块运行相对较快,但这个过程太慢了。在这种情况下,使用时间分析器来优化初始化。我建议观看WWDC视频Profiling In-Depth