在全屏模式下添加 MPMoviePlayerController?

Posted

技术标签:

【中文标题】在全屏模式下添加 MPMoviePlayerController?【英文标题】:Adding an MPMoviePlayerController in full screen mode? 【发布时间】:2011-03-22 19:28:23 【问题描述】:

我的 iPhone 应用程序中有一个 UIButton,单击它时会播放电影。播放电影的代码如下所示:

NSURL *url = [[NSBundle mainBundle] URLForResource:@"Robot" withExtension:@"m4v"];
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
moviePlayer.controlStyle = MPMovieControlModeDefault;
[moviePlayer.view setFrame: self.view.bounds];
[self.view addSubview: moviePlayer.view];
[moviePlayer play];

我希望电影以全屏模式打开,就像所有电影在 ios 3.2 更新之前所做的那样,蓝色的“完成”按钮位于左上角,视频以横向模式播放默认情况下。

有人知道怎么做吗?谢谢。

【问题讨论】:

【参考方案1】:

假设 self.view 正在使用整个屏幕:

NSURL *url = [[NSBundle mainBundle] URLForResource:@"Robot" withExtension:@"m4v"];
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
moviePlayer.view.transform = CGAffineTransformConcat(moviePlayer.view.transform, CGAffineTransformMakeRotation(M_PI_2));
[moviePlayer.view setFrame: self.view.bounds];
[self.view addSubview: moviePlayer.view];
[moviePlayer play];

现在假设您基本上不想使用当前的 self.view 而只是让它在全屏下工作(我称之为;假全屏,因为它不调用全屏属性);

NSURL *url = [[NSBundle mainBundle] URLForResource:@"Robot" withExtension:@"m4v"];
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
moviePlayer.view.transform = CGAffineTransformConcat(moviePlayer.view.transform, CGAffineTransformMakeRotation(M_PI_2));
UIWindow *backgroundWindow = [[UIApplication sharedApplication] keyWindow];
[moviePlayer.view setFrame:backgroundWindow.frame];
[backgroundWindow addSubview:moviePlayer.view];
[moviePlayer play];

【讨论】:

谢谢!实际上,self.view 不是全屏的。你知道我如何将视频设置为全屏吗? 哦等等,我找到了。 [moviePlayer setFullscreen:YES animated:YES]; 哦……再等等!插入该行可防止视频以横向加载。知道怎么做吗? 假全屏:只需使用整个屏幕,例如将该moviePlayer.view 直接添加到当前keyWindow。 谢谢!将播放器注入关键窗口的绝妙主意。【参考方案2】:

我认为解决它的最佳方法是使用MPMoviePlayerViewController 而不是MPMoviePlayerController

MPMoviePlayerViewController 类实现了一个简单的视图控制器,用于显示全屏电影。与单独使用MPMoviePlayerController 对象来立即呈现电影不同,您可以在通常使用视图控制器的任何地方合并电影播放器​​视图控制器。

要以模态方式呈现电影播放器​​视图控制器,您通常使用presentMoviePlayerViewControllerAnimated: 方法。此方法是 UIViewController 类的一个类别的一部分,由Media Player framework 实现。 presentMoviePlayerViewControllerAnimated: 方法使用标准过渡动画来呈现电影播放器​​视图控制器,以呈现视频内容。要关闭模态呈现的电影播放器​​视图控制器,请调用 dismissMoviePlayerViewControllerAnimated 方法。

【讨论】:

是的,使用MPMoviePlayerViewController 可以最大程度地减少编写大量代码的需要。

以上是关于在全屏模式下添加 MPMoviePlayerController?的主要内容,如果未能解决你的问题,请参考以下文章

在全屏模式下隐藏标题?

window.navigator.standalone 检测iOS WebApp是否运行在全屏模式

MPMoviePlayerController 在全屏模式下停止工作 // 纵向 // iOS 7

Pygame 窗口在全屏模式下没有响应

为啥 Direct3D 应用程序在全屏模式下表现更好?

MPMoviePlayerController 在全屏模式下向前搜索,直到结束卡住