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

时间:2012-04-10 15:06:10

标签: ios ipad mpmovieplayercontroller uiinterfaceorientation

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

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}

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

用户必须旋转iPad以使自己风景自如,以使事物再次显得良好,然后无法按预期旋转回到肖像。

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

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

1 个答案:

答案 0 :(得分:5)

  

那么,为什么我的视图会旋转到纵向,即使所有的应该都是指定的,不能旋转到纵向的AutorotateToInterfaceOrientation?我怎样才能确保电影播放器​​不会轮换我的观看次数?

     

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

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

       +------------------------+  +-------------------+
       |                        |  |                   |
       | UINavigationController +->| Some Intermediate |
       |                        |  | View Controllers  |
       +------------------------+  |                   |
                                   +---------------+---+
                                                   |
                                                   v
                                          +--------------------------+
                                          |  MPMoviePlayerController |
                                          |       (embed)            |
                                          +--------------------------+

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

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

希望这有帮助!