全屏模式后,MPMoviePlayerController使App的方向不正确

Mac*_*n13 2 mpmovieplayercontroller ipad uiinterfaceorientation ios

因此,我们构建了一个仅支持横向定位的iPad应用程序.通过在plist中设置Supported interface orientations (iPad)to来强制执行此操作Landscape (left/right home button).所有的UIViewControllers实现shouldAutorotateToInterfaceOrientation:如下:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,应用程序被锁定在横向方向.现在我们已经MPMoviePlayerController嵌入了我们的一个观点.当用户使用此电影全屏时,他可以旋转到肖像.电影播放器​​似乎绕过了我们所有的景观设置.这对我来说很好,但是当用户done在纵向方向上点击按钮时,我们所有人UIViewControllers都在肖像中并且看起来很可怕!

用户必须旋转iPad以使自己风景自如,以使事物再次看起来很好,然后将无法按预期旋转回到肖像.

那么为什么我的视图轮换为纵向,即使所有人都shouldAutorotateToInterfaceOrientation告诉iOS不要旋转为肖像?我怎样才能确保电影播放器​​不会旋转我的观点?

如果您的解决方案还将电影播放器​​本身锁定在风景中,那对我来说没问题.只要我的意见没有轮换,我很高兴!:)

Tau*_*aum 5

那么,为什么我的视图轮换为纵向,即使所有的应该都是指定的东西,以便告诉iOS不要旋转到肖像?我怎样才能确保电影播放器​​不会旋转我的观点?

如果您的解决方案还将电影播放器​​本身锁定在风景中,那对我来说没问题.只要我的意见没有轮换,那对我来说没问题!:)

使用此视图层次结构时,我遇到了这个问题:

       +------------------------+  +-------------------+
       |                        |  |                   |
       | UINavigationController +->| Some Intermediate |
       |                        |  | View Controllers  |
       +------------------------+  |                   |
                                   +---------------+---+
                                                   |
                                                   v
                                          +--------------------------+
                                          |  MPMoviePlayerController |
                                          |       (embed)            |
                                          +--------------------------+
Run Code Online (Sandbox Code Playgroud)

所有中级视图控制器都被锁定为横向方向,因此除非MPMoviePlayerController全屏显示(导致与OP完全相同的问题),否则App永远不会处于纵向状态.

解决方案是通过创建覆盖的子类将UINavigationController锁定到Landscape方向shouldAutorotateToInterfaceOrientation.这样MPMoviePlayerController就不再旋转到纵向方向.我怀疑当进入全屏时它会将自己添加到mainWindow的rootViewController中,在我的例子中是UINavigationController(或者更确切地说是我的子类).

希望这可以帮助!