MPMoviePlayerViewController子视图

时间:2014-07-09 11:22:49

标签: ios objective-c mpmovieplayercontroller statusbar subview

我在视图控制器中有一个视图,并将其声明为属性_movieSubview。我向_movieSubview添加了一个MPMoviePlayerViewController,视频播放效果很好。

-(void)moviePlay{


NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"High Rope" ofType:@"mov"]];
_playerController=[[MPMoviePlayerViewController alloc]initWithContentURL:url];
//[self presentMoviePlayerViewControllerAnimated:_playerController];
_playerController.moviePlayer.movieSourceType = MPMovieSourceTypeFile;

[_playerController.moviePlayer prepareToPlay];
_playerController.moviePlayer.repeatMode = MPMovieRepeatModeOne;
_playerController.moviePlayer.controlStyle = MPMovieControlStyleNone;
_playerController.moviePlayer.scalingMode = MPMovieScalingModeAspectFit;
[_playerController.moviePlayer play];


/*[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(moviePlayerDidFinish:)
                                             name:MPMoviePlayerPlaybackDidFinishNotification
                                           object:_playerController];*/
//---play partial screen---
_playerController.view.frame = CGRectMake(0, 0, 320, 460);
[_movieSubview addSubview:_playerController.view];

}

- (void)moviePlayerDidFinish:(NSNotification *)note
{
    if (note.object == _playerController) {
        NSInteger reason = [[note.userInfo     objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] integerValue];
        if (reason == MPMovieFinishReasonPlaybackEnded)
        {
            [_playerController.moviePlayer play];
        }
    }
}

我的两个问题是:

  1. 当我在子视图中添加MPMoviePlayerViewController时,我的状态栏消失了。如何保留状态栏?

  2. 如何在重复时播放两次视频,然后等待用户播放?

1 个答案:

答案 0 :(得分:0)

您应该提供_playerController而不是添加为子视图。在创建MPMoviePlayer实例时使用此代码:

     [moviePlayer setFullscreen:YES animated:YES];
     moviePlayer.controlStyle = MPMovieControlStyleFullscreen;

     NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
     [notificationCenter addObserver:self selector:@selector(moviePlayerEvent:) name:MPMoviePlayerLoadStateDidChangeNotification object:moviePlayer];
     [notificationCenter addObserver:self selector:@selector(playBackStateChanged:) name:MPMoviePlayerPlaybackStateDidChangeNotification object:moviePlayer];

    -(void)moviePlayerEvent:(NSNotification*)aNotification{

          [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];

    }

   -(void)playBackStateChanged:(id)sender{
MPMoviePlaybackState playbackState = [moviePlayerViewController.moviePlayer playbackState];

switch (playbackState) {

    case MPMoviePlaybackStateStopped :

        //play again
        NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
        [notificationCenter removeObserver:self]; 
        break;

    case MPMoviePlaybackStatePlaying :
        break;

    case MPMoviePlaybackStateInterrupted :
        break;
    }
}