以全屏模式添加MPMoviePlayerController?

时间:2011-03-22 19:28:23

标签: iphone objective-c ios4 mpmovieplayercontroller

我的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更新之前所做的那样,蓝色的“完成”按钮位于左上角,视频以横向模式播放默认情况下。

有谁知道怎么做?感谢。

2 个答案:

答案 0 :(得分:17)

假设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];

答案 1 :(得分:11)

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

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

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