应该自动调用的方法auto

时间:2018-07-10 13:13:57

标签: ios objective-c xcode

应用定向突然停止了预期的工作。我有一个应用程序,其中一个tabBarController主要在纵向模式下工作。一些VC会覆盖此设置以允许横向显示。部署目标是iOS 9.0及更高版本上的iPhone。

shouldautorotate方法不再在应用程序中的任何位置被调用,但是每次旋转supportedInterfaceOrientations被调用大约10次(在tabbarController中)(对于不同的subVC,我猜是这样)

这一切以前都非常出色,但是如果我查看一个较旧的分支(该分支我100%知道它起作用),那么它仍然不起作用。 (我知道这一点是因为我有一个测试版本,可以在下载时正常工作)

我尝试回溯,清理,更新,重新安装,重新下载整个项目,切换分支等,但是没有任何效果。我遍历了调试器输出中的所有警告,并尝试了一堆代码解决方案。

我想知道是否是某种原因引起的plist或项目设置。但是,老实说,我几乎从未更改过项目设置,所以我怀疑就是这样。

PS。这不是标题相似的问题的重复。我已经经历了他们。如果有人有任何想法,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

自动旋转是我iOS存在的祸根。在iOS 6之前,有一种非常好的方法来执行此操作,然后在iOS 6中有一种新方法可以执行此操作,然后在iOS 7中提供另一种方法,在iOS 8中提供另一种方法。根据UIViewController documentation

  

从iOS 8开始,不建议使用所有与旋转有关的方法。相反,旋转被视为视图控制器视图大小的变化,因此使用viewWillTransitionToSize:withTransitionCoordinator:方法进行报告。当界面方向改变时,UIKit在窗口的根视图控制器上调用此方法。然后,该视图控制器通知其子视图控制器,从而在整个视图控制器层次结构中传播消息。

请注意,此方法在窗口的根视图控制器上调用,而不是在活动/可见/任何视图控制器上调用。我的根视图控制器消除了所有弹出窗口,然后在其视图上调用setNeedsLayout。 (我手动布置了所有视图,因此您的要求可能会有所不同。)