在全屏模式下添加 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是否运行在全屏模式