Search code examples
iosobjective-cmpmovieplayer

How to stop MPMoviePlayerViewController from the beginning


I want to play a movie when I go to next ViewController in iOS app.

I wrote this cord.

 NSURL *filePath = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"movie10" ofType:@"mp4"]];

    MPMPlayerController = [[MPMoviePlayerViewController alloc]initWithContentURL:filePath ];
    MPMPlayerController.moviePlayer.backgroundView.backgroundColor = [UIColor clearColor];
    MPMPlayerController.moviePlayer.controlStyle = MPMovieControlStyleNone;
    //MPMPlayerController.view.frame = self.view.frame;
    MPMPlayerController.view.frame = CGRectMake(0, 0, 320, 600);

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(splashMoviePlayBackDidFinish:)
                                                 name:MPMoviePlayerPlaybackDidFinishNotification
                                               object:nil];

    [[NSNotificationCenter defaultCenter] removeObserver:MPMPlayerController
                                                    name:MPMoviePlayerPlaybackDidFinishNotification
                                                  object:MPMPlayerController.moviePlayer];

    MPMPlayerController.moviePlayer.scalingMode = MPMovieScalingModeAspectFill;
    [MPMPlayerController.moviePlayer setFullscreen:YES animated:NO];

    [self.view addSubview:MPMPlayerController.view];

    [MPMPlayerController.moviePlayer pause];


- (void)splashMoviePlayBackDidFinish:(NSNotification *)notification
{
    UIView *fadeView = [[UIView alloc]initWithFrame:self.view.frame];
    fadeView.backgroundColor = [UIColor blackColor];
    fadeView.alpha = 0.0f;
    [self.view addSubview:fadeView];

    // Fadeout & remove
    [UIView animateWithDuration:0.5f
                     animations:^{
                         fadeView.alpha = 1.0;
                     }
                     completion:^(BOOL finished){
                         [fadeView removeFromSuperview];

                         [[NSNotificationCenter defaultCenter] removeObserver:self];
                         [MPMPlayerController.view removeFromSuperview];
                     }];
}


-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    if ((MPMPlayerController.moviePlayer.playbackState==MPMoviePlaybackStateStopped)||(MPMPlayerController.moviePlayer.playbackState==MPMoviePlaybackStatePaused))
    {
        [MPMPlayerController.moviePlayer play];
    }
    else
    {
        [MPMPlayerController.moviePlayer pause];
    }
}

But the movie doesn't stop(pause) when the ViewController appeared and play from the beginning. (when I touched the view, the movie paused. once I touched there, the movie played again)

What should I do for stopping the movie from the beginning?


Solution

  • There is Default property "shouldAutoplay" is available of the MPMPlayerController

    User Below Code ::

    MPMPlayerController = [[MPMoviePlayerViewController alloc]initWithContentURL:filePath ];
    MPMPlayerController.moviePlayer.backgroundView.backgroundColor = [UIColor clearColor];
    MPMPlayerController.moviePlayer.controlStyle = MPMovieControlStyleNone;
    //MPMPlayerController.view.frame = self.view.frame;
    MPMPlayerController.view.frame = CGRectMake(0, 0, 320, 600);
    
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(splashMoviePlayBackDidFinish:)
                                                 name:MPMoviePlayerPlaybackDidFinishNotification
                                               object:nil];
    
    [[NSNotificationCenter defaultCenter] removeObserver:MPMPlayerController
                                                    name:MPMoviePlayerPlaybackDidFinishNotification
                                                  object:MPMPlayerController.moviePlayer];
    
    MPMPlayerController.moviePlayer.scalingMode = MPMovieScalingModeAspectFill;
    [MPMPlayerController.moviePlayer setFullscreen:YES animated:NO];
    
    //*** Change
    [MPMPlayerController.moviePlayer setShouldAutoplay:NO]
    //***
    
    [self.view addSubview:MPMPlayerController.view];
    
    [MPMPlayerController.moviePlayer pause];