MPMovieViewController不自动旋转

MPMovieViewController不自动旋转

问题描述:

我有一个应用程序通过MPMoviePlayerViewController来播放视频,该应用程序在嵌入UITabBarController中的UINavigationController中嵌入的UITableViewController上执行选择操作后呈现。MPMovieViewController不自动旋转

的TabBar控制器>导航控制器>表视图控制器* MPMoviePlayerViewController

一切都按预期在iOS5中,但升级到iOS6的我发现,被提出后,如预期的视频不旋转。如果我在目标摘要页面上选择了更多受支持的界面方向,则会导致整个应用程序旋转。

苹果的文件说,在UIViewController类参考以下内容:

在iOS 6中,您的应用支持在 应用程序的Info.plist文件中定义的接口方向。视图控制器可以覆盖 supportedInterfaceOrientations方法以限制支持的 方向的列表。一般来说,系统只会在窗口视图控制器的根目录控制器或视图控制器上显示填充 整个屏幕;子视图控制器使用其父视图控制器为其提供的窗口部分,并且不再支持 直接参与有关旋转 支持的决策。应用程序的方向遮罩和视图控制器的方向遮罩的交集用于确定视图控制器可以旋转到哪个方向。

但我不确定何时子视图控制器实际参与轮换决策。当电影播放时,我需要改变我的标签栏控制器对shouldAutorotatesupportedInterfaceOrientations的响应方式吗?

基本的答案是,所有视图控制器的旋转行为由“最*”视图控制器决定,但MPMoviePlayerViewController决定了它自己的旋转行为,因为它充当“视图控制器来呈现整个屏幕” 。

例如:如果我有单视图应用程序,自动旋转方法将在视图控制器上为单个视图处理。如果我在标签栏中嵌入该视图,那么标签栏控制器实现将处理这些消息。如果我将该视图嵌入到标签栏内的导航栏中,则标签栏实现仍然是处理消息的视图(如果其他视图控制器嵌入其中,它仍然是“根视图控制器”)。

MPMoviePlayerViewController将对shouldAutorotate作出回应并支持风景方向。仍然可以防止电影旋转(不在目标摘要页面上选择纵向),但是您为视图控制器层次结构选择的设置不会影响其执行此操作的能力。当呈现MPMoviePlayerViewController时,视图控制器处理自动旋转消息。当它没有出现时,标签栏控制器负责。

+0

你是否设法让MPMoviePlayerViewController旋转视频?我已经subclassed MPMoviePlayerViewController并将shouldAutorotate设置为YES,但我仍然没有设法让它旋转。 –

+1

您不需要子类MPMoviePlayerViewController - 它已将shouldAutorotate设置为YES。如果您的MPMoviePlayerViewController在展示之后不支持旋转,那是因为您的应用程序不支持横向方向。您可以在您的目标摘要页面上直接在plist中编辑它,或者在您的AppDelegate中实现应用程序:supportedInterfaceOrientationsForWindow:。 –

+0

是的,事实证明这是我的不好。我在应用程序委托中为keyWindow添加了子视图的应用程序,而不是正确设置keyWindow的根视图控制器。事实证明,这是我的观点不旋转的真正罪魁祸首。不管怎么说,还是要谢谢你! –