该应用程序在 iOS5 中横向运行非常好。但是在 iOS6 中,它开始在所有视图控制器中使用纵向。不再调用 shouldAutorotateToInterfaceOrientation 方法。我阅读了有关 iOS6 中更改的旋转机制的新内容,我可以通过在我的 AppDelegate 中添加一行来解决这个问题:
self.window.rootViewController = _viewController
_viewControler 是起始屏幕(主菜单)。所有其他视图控制器都实现了 shouldAutorotateToInterfaceOrientation 方法,并且仅对横向返回 YES。因此,对于只需要支持一个方向的应用程序来说,这是一个完美的解决方案。
然而,问题是我需要一个视图控制器(我们称之为phone-VC)以纵向显示。现在,如果我想要旋转这个视图控制器,那么我需要在分配给 appDelegate 中的 rootViewControler 的主菜单控制器中返回 YES。但是,我不能这样做,因为这个 rootViewController 是只需要以横向呈现的启动窗口,否则这个窗口中带有图形的布局将会中断。但是,如果我没有从它的 shouldAutorotateToInterfaceOrientation (Home-menu) 返回 YES,那么在我的视图 phone-VC 中不会调用相同的方法,需要以纵向显示。
有任何想法吗?在 AppDelegate 中是否强制分配 rootViewController?
更新:设备上存在问题(至少在 iPhone4 上)。