问候,
我正在为一个项目而挣扎,因为一个UITableViewController (它生活在导航控制器中)和一个定制的UIViewController之间的间隔并不是动画的。
“故事板”中的复选框清楚地写着“动画”,那就是“显示(例如推)”。但是,当执行了segue时,就没有动画了。经过一些测试后,我发现手动调用UINavigationController pushViewController(destination, animated: true)也不活跃。
目标视图控制器包含一对执行自定义绘图的视图。
我做错什么了?
干杯,
亚历山大。
发布于 2016-04-18 18:47:17
@AlexandreCassange和我设法在聊天中找到了这个问题,但是对于那些发现了类似问题的人来说,解决方案是:
问题是,在加载viewController时(在调用viewDidAppear()之前),一些部署CALayer的代码花费了太长时间,并有效地阻止了动画。
调试此问题的过程如下:
检查在viewDidAppear()之前运行的可能需要很长时间的代码,并注释掉它,然后检查动画是否正常工作。一次只执行一段代码,这样您就可以准确地找到违规代码所在的位置。亚历山大就是这样找到的。
或者,使用仪器(时间分析器)检查在目标viewController初始化期间发生的任何长时间运行的代码。
虽然有时会发生这种情况,因为viewControllers初始化很复杂,虽然每个单独的代码块运行相对较快,但是整个过程太慢了。在这种情况下,使用时间分析器优化您的初始化。我推荐观看WWDC的视频深度剖析。
https://stackoverflow.com/questions/36696735
复制相似问题