【问题标题】:Adding an MPMoviePlayerController in full screen mode?在全屏模式下添加 MPMoviePlayerController?
【发布时间】: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 更新之前所做的那样,蓝色的“完成”按钮位于左上角,视频以横向模式播放默认情况下。

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

【问题讨论】:

    标签: iphone objective-c ios4 mpmovieplayercontroller


    【解决方案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 可以最大程度地减少编写大量代码的需要。
    猜你喜欢
    • 1970-01-01
    • 2018-07-22
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多