iPad - MPMoviePlayer在缩小后消失

时间:2013-02-07 01:05:39

标签: ios ipad notifications mpmovieplayercontroller mpmovieplayer

我正在使用MPMoviePlayer来传输视频网址。

用户点击后,视频会在视图的框架中开始播放。这没问题。嵌入视频时,默认控件会放置一个放大按钮。

当用户按下放大时,视频会全屏显示,而不会中断播放。

然而,当用户再次按下缩小按钮时,我有三个问题:

  • 视频缩放到屏幕的一角然后消失, 而不是回到原来的位置。

  • 视频在转到角落后消失,播放结束, 而不是继续播放视频。

  • MPMoviePlayerDidExitFullscreenNotification 永远不会被调用, 只调用 MPMoviePlayerWillExitFullscreenNotification 。我尝试将nil和mediaPlayerController发送到通知中心。

当按下完成按钮时,视频会转到屏幕的一角并消失。

我的播放器是通过以下方式创建的:

   moviePlayer=[[MPMoviePlayerController alloc] init];
    moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;
    moviePlayer.scalingMode = MPMovieScalingModeAspectFit;
    moviePlayer.shouldAutoplay=YES;
    moviePlayer.controlStyle=MPMovieControlStyleEmbedded;
    moviePlayer.view.hidden = YES;

然后当用户点击视图时会发生这种情况:

- (void) playVideo {

    NSURL *url=[NSURL URLWithString: _news.videoUrl];

    moviePlayer.contentURL = url;
    moviePlayer.view.hidden = NO;

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerWillExitFullScreen:) name:MPMoviePlayerWillExitFullscreenNotification object:moviePlayer];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerDidExitFullScreen:) name:MPMoviePlayerDidExitFullscreenNotification object:moviePlayer];

    [moviePlayer play];

}



- (void) moviePlayerWillExitFullScreen:(NSNotification*)notification {
    NSLog(@"WILL EXIT FULLSCREEN");

}

- (void) moviePlayerDidExitFullScreen:(NSNotification*)notification {
    NSLog(@"EXITED FULLSCREEN");  //NOT CALLED
}


- (void) moviePlayBackDidFinish:(NSNotification*)notification {

    NSLog(@"FINISHED PLAYIIING");

    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer];
    moviePlayer.view.hidden = YES;
}

1 个答案:

答案 0 :(得分:1)

那么,同时我会回答我的4个问题中的3个:

  • 视频缩放到屏幕的一角然后消失,而不是返回到原始位置。

  • 视频在转到角落后消失,播放结束,而不是继续播放视频。

  • 当按下完成按钮时,视频会转到屏幕的一角并消失。

问题在于退出全屏模式后,会调用 -viewWillAppearAnimatedAnimated 方法。在该方法中修改了布局,这就是播放停止并将视图发送到角落的原因。