如何将 mpMoviePlayerController 方向锁定为横向模式?

How to set the mpMoviePlayerController orientation locked to landscape mode?

在我的项目中,我设置了方向锁定,因此它应该 运行 仅在纵向 mode.I 希望 mpMoviePlayer 在旋转到横向后将其旋转到横向模式,然后保持横向模式,直到用户单击 "done " 按钮。

现在播放器将旋转到全屏横向,当我们旋转回纵向模式时,播放器将旋转回全屏纵向模式并且任何进一步的旋转都不会受到影响 player.It 将保持在纵向全屏模式下。

有什么想法吗??

这是我的要求..:我希望 mpMoviePlayer 在旋转到横向后将其旋转到横向模式,然后保持横向模式直到用户单击 "done " 按钮。

有什么建议吗?提前致谢..

我猜你必须解锁应用程序的方向。并在所有 viewController 中使用 supportedInterfaceOrientations 方法将方向锁定为纵向。基于例如 MPMoviePlayerViewController 创建您自己的 mpPlayerVC 并使用 landscape.

覆盖相同的方法

首先将这个放在播放视频的 ViewController 中:

- (BOOL)shouldAutorotate
{
    return YES;
}

然后实施强制所需方向或任何您想要的方向的方法:

- (void)forceOrientationPortrait
{
    [[UIDevice currentDevice] setValue:[NSNumber numberWithInt:UIInterfaceOrientationPortrait] forKey:@"orientation"];
}

- (void)forceOrientationLandscape
{
    [[UIDevice currentDevice] setValue:[NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft] forKey:@"orientation"];
}

最后添加 MoviePlayer 何时进入全屏和何时退出的观察者。观察者触发前面提到的方向改变方法:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(forceOrientationLandscape) name:MPMoviePlayerDidEnterFullscreenNotification object:Nil];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(forceOrientationPortrait) name:MPMoviePlayerDidExitFullscreenNotification object:Nil];
}

全部放在一起应该是这样的:

希望通过这个你可以完成你的目标。

-- 编辑--

如果你想在强制设备 portrait/landscape 后锁定方向,那么你可以实现一个 Boolean 来相应地设置 ShouldAutorotate 方法。尝试这样的事情: