哎呀!半天时间用掉了,问题解决了!嘿嘿。
正如上面的文档所说,这就是真正的问题所在!核心要点是:
更多的责任正在转移到应用程序和应用程序代理。现在,iOS容器(例如UINavigationController)不会向它们的子项查询是否应该自动旋转屏幕。默认情况下,iPad设备和iPhone设备支持的界面方向设置为UIInterfaceOrientationMaskAll和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中)。所以,我甚至无法做出反应,因为它发生得出乎意料,而在我快速点击我的应用程序中的其他元素后,它恢复到正常方向。所以,不确定-可能是模拟器工作中的某些延迟或其他原因(或者确实是一个错误:))。
祝你好运!