【问题标题】:How do I dismiss subview in MPMoviePlayer?如何关闭 MPMoviePlayer 中的子视图?
【发布时间】:2012-11-20 20:36:11
【问题描述】:

我有一个在启动时自动播放的视频。短片完成后会显示黑屏。我想关闭子视图以显示图像或自动加载另一个控制器?

下面是我的代码:

 (void)viewDidLoad

 {

    {
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
                                         pathForResource:@"cover" ofType:@"mp4"]];

    MPMoviePlayerController *player = [[MPMoviePlayerController alloc]
                                       initWithContentURL:url];



    player.movieSourceType = MPMovieSourceTypeFile;

    [player setControlStyle:MPMovieControlStyleNone];

    player.view.frame = CGRectMake(0, 0, 768, 960);

    [self.view addSubview:player.view];
    [player play];


    player = nil;

}

感谢您的帮助..我是这方面的新手。

【问题讨论】:

    标签: mpmovieplayercontroller xcode4.5 subview addsubview mpmovieplayer


    【解决方案1】:

    几周前我发现了很多。查看可用的通知。 http://developer.apple.com/library/ios/#documentation/mediaplayer/reference/MPMoviePlayerController_Class/Reference/Reference.html

    在 viewDidLoad 中添加类似的内容:

    // Remove the movie player view controller from the "playback did finish" notification observers
    [[NSNotificationCenter defaultCenter] removeObserver:_moviePlayer
                                                    name:MPMoviePlayerPlaybackDidFinishNotification
                                                  object:_moviePlayer];
    // Register this class as an observer instead
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(movieFinishedCallback:)
                                                 name:MPMoviePlayerPlaybackDidFinishNotification
                                               object:_moviePlayer];
    

    现在您有一个方法可以重新添加视图、缩略图或其他任何内容:

    - (void)movieFinishedCallback:(NSNotification*)aNotification
    {   
        // Obtain the reason why the movie playback finished
        NSNumber *finishReason = [aNotification userInfo][MPMoviePlayerPlaybackDidFinishReasonUserInfoKey];
    
        if ([finishReason intValue] == MPMovieFinishReasonPlaybackEnded) {
    
           [self.view addSubview:self.moviePlayer.view];
        }
    

    (此代码是从我的项目中即时改编的,可能需要考虑适应!)

    MPMoviePlayerController 有很多通知,当电影播放、暂停、停止、完成等时会触发这些通知。您可以将代码添加到这些方法中,以便很好地控制您的演示文稿。

    在我的例子中,我花了大约一天的时间研究和修改(也许还有半天的清理和调整),但我设法得到了一个非常漂亮的播放/暂停透明按钮,带有“播放图标”图像叠加暂停或停止时,所有加载或卸载都基于播放器状态。这是一个简单的自定义播放器控件,完全符合我的要求。完全可行,只需从一个玩家状态开始,得到你想要的,然后进入下一个状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 2016-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多