哎呀!用了半天,问题解决了!呵呵。
正如上面的文档所说,这是真的!核心点是:
更多的责任正在转移到 app 和 app delegate 身上。现在,iOS 容器(例如 UINavigationController)不会咨询它们的子容器来确定它们是否应该自动旋转。默认情况下,应用程序和视图控制器支持的界面方向设置为 iPad 惯用语的 UIInterfaceOrientationMaskAll 和 iPhone 惯用语的 UIInterfaceOrientationMaskAllButUpsideDown 。
所以,每当根控制器发生变化时,系统都会询问应用程序委托“那么,我们是什么?旋转与否?”
如果“旋转”:
仅当此视图控制器从其 shouldAutorotate 方法返回 YES 时才检索支持的方向
然后系统要求我们的应用委托
- (NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
return ...;
}
这真的很简单。
如何确定我们何时应该允许纵向或横向等 - 取决于您。由于某些原因,对根控制器的测试对我不起作用,但这有效:
- (NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
return self.fullScreenVideoIsPlaying ?
UIInterfaceOrientationMaskAllButUpsideDown :
UIInterfaceOrientationMaskPortrait;
}
每当我需要时,我都会手动设置属性“fullScreenVideoIsPlaying”。
唯一需要注意的重要事项是枚举。正如它在文档中所说的那样......(仔细阅读 iPad/iPhone 上面的内容)。因此,您可以根据需要与这些人一起玩。
另一个小问题是关闭播放器控制器后的一些错误行为。有一次它没有改变方向,但那发生了一次,而且以某种奇怪的方式发生,而且只在模拟器中(当然仅限 iOS 6)。所以我什至无法做出反应,因为它出乎意料地发生了,在我的应用程序的其他一些元素上快速单击后,它旋转到正常方向。所以,不确定 - 可能是模拟器工作或某些东西的延迟(或者,真的是一个错误:))。
祝你好运!