0

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

下面是我的代码:

 (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;

}

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

4

1 回答 1

0

几周前我想出了很多。查看可用的通知。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 有很多在电影播放、暂停、停止、结束等时触发的通知。您可以将代码添加到这些方法中,以便很好地控制您的演示文稿。

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

于 2012-12-01T18:13:00.600 回答