Iphone MPMoviePlayerController将纵向重新定向为横向并返回纵向(iOS 4.1)

Iphone MPMoviePlayerController将纵向重新定向为横向并返回纵向(iOS 4.1),iphone,uiinterfaceorientation,Iphone,Uiinterfaceorientation,由于iOS 3.2,MPMoviePlayerController类允许在视图层次结构中嵌入电影。 现在我面临这个问题:我通过放置MPMoviePlayerController的一个实例来创建纵向视图。当用户触摸“全屏”按钮时,该视图进入全屏模式,但视图保持纵向。当用户旋转设备时,全屏电影视图不会自动旋转,因为我的应用程序禁止横向界面方向。 因此,为了允许电影播放器全屏视图的自动旋转,我将我的视图控制器shouldAutorotateToInterfaceOrientation:method更改

由于iOS 3.2,MPMoviePlayerController类允许在视图层次结构中嵌入电影。 现在我面临这个问题:我通过放置MPMoviePlayerController的一个实例来创建纵向视图。当用户触摸“全屏”按钮时,该视图进入全屏模式,但视图保持纵向。当用户旋转设备时,全屏电影视图不会自动旋转,因为我的应用程序禁止横向界面方向。 因此,为了允许电影播放器全屏视图的自动旋转,我将我的视图控制器shouldAutorotateToInterfaceOrientation:method更改为当且仅当电影播放器处于全屏模式时,为横向返回YES。 这是完美的:当用户进入全屏,然后旋转到横向的球员是自动旋转到横向,并填补了整个屏幕

// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    //return (interfaceOrientation == UIInterfaceOrientationPortrait);
    if(UIInterfaceOrientationIsPortrait(interfaceOrientation)) {
        return(YES);
    }

    if(UIInterfaceOrientationIsLandscape(interfaceOrientation)) {
        return([movieController isFullscreen]);
    }

return(NO);
}
现在,当我在全屏视图中触摸“完成”按钮时,问题出现了,同时保持在横向视图中。全屏关闭,然后我看到的是我的原始视图自动旋转:但我不希望这种自动旋转

部分但不可接受的解决方案是监听“MPMoviePlayerDidExitFullscreenNotification”,如果界面旋转到横向,则强制重新定向以使用未记录的私有函数:

[[UIDevice currentDevice] setOrientation:UIDeviceOrientationPortrait]
此方法可行,但不可接受,因为禁止使用此方法

我尝试使用
[[UIApplication sharedApplication]SetStatusBaroOrientation:UIInterfaceOrientationGrait]
强制定向,但由于我在选项卡栏中,这不起作用(UITabBar保持横向大小)


感谢您的帮助

您可以为MPMovieplayer使用单独的视图控制器。您不必重写

(BOOL)应自动旋转指针面定向:(ui界面定向)界面定向

在原始视图控制器中

如果您正在使用,那么一切都已经为您设置好了,因为默认情况下,
方法shouldAutorotateToInterfaceOrientation:
将返回YES。您可以将其用作子视图,也可以通过调用
PresentMoviePlayServiceController已激活:

请查看以下内容:


可能问题有点不同,但解决方案可能相同。

您找到解决方案了吗?我也遇到了同样的情况,我找不到解决方案。理论上,通过iOS6中引入的管理方向的新方法,可以通过直接设置每个视图控制器方向来解决此问题。可以使用向每个视图控制器请求方向权限的新方法来完成此操作。