我的应用程序的视图控制器层次结构设置如下:
UITabBarController
|
UINavigationController
| |
| UIViewController
|
UINavigationController
|
UIViewController
此层次结构中的所有视图控制器都会覆盖该方法:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
并返回YES
- 因此视图控制器应该能够旋转到任何旋转 - 即使颠倒。
然而,在此设置中,没有一个视图控制器能够成功旋转。我的印象是,如果导航和标签栏控制器的视图控制器响应旋转,它们就会旋转。
为什么我的视图控制器不旋转?
我能够让它们旋转的唯一方法是通过子类化UINavigationController
并覆盖它shouldAutorotate
方法,但这对我来说没有必要,我想知道我是否遗漏了一些东西来完成这项工作。
Edit:
根据用户体验编码指南:
如果您还使用工具栏,则每个工具栏项的视图控制器必须实现 shouldAutorotateToInterfaceOrientation: 方法,并为您希望支持的每个方向返回 YES。如果您有工具栏项的导航控制器,则该导航控制器的根视图控制器必须实现 shouldAutorotateToInterfaceOrientation: 方法并返回 YES。
它说“工具栏” - 但我认为这是一个拼写错误,可能应该是“选项卡栏”。
所以看来我正确地实现了这一点,但我的控制器仍然不自动旋转。
我遇到过这个问题,但我不记得它发生的确切原因。当询问特定方向时,选项卡栏控制器要求其所有视图控制器响应“是”,以便旋转到该方向。
如果以模态方式呈现,似乎与底层 VC 系统无关。
我创建了一个测试来证明这一点(GitHub 上的旋转测试 https://github.com/danielctull/StackOverflow-RotationTest),但这一切似乎都有效。希望我能记得为什么我在某个时候失败了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)