我正在创建一个MPMoviePlayerController对象,并在全屏模式下流式传输视频。
我正在使用一个UIViewController来显示电影视图。
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
//http://www.youtube.com/watch?feature=player_detailpage&v=ebeQaznNcmE
NSURL *url = [NSURL URLWithString:@"http://a1408.g.akamai.net/5/1408/1388/2005110405/1a1a1ad948be278cff2d96046ad90768d848b41947aa1986/sample_mpeg4.mp4"];
MPMoviePlayerController *mPlayer = [[MPMoviePlayerController alloc]initWithContentURL:url];
mPlayer.view.frame = gMainView.frame;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:mPlayer];
mPlayer.shouldAutoplay = YES;
mPlayer.controlStyle = MPMovieControlStyleFullscreen;
[gMainView addSubview:mPlayer.view];
[mPlayer prepareToPlay];
[mPlayer setFullscreen:YES animated:YES];
[mPlayer play];
}
- (void)moviePlayBackDidFinish:(NSNotification*)notification {
int reason = [[[notification userInfo] valueForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] intValue];
if (reason == MPMovieFinishReasonPlaybackEnded) {
//movie finished playing
}
else if (reason == MPMovieFinishReasonUserExited) {
//user hit the done button
MPMoviePlayerController *moviePlayer = [notification object];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayer];
if ([moviePlayer respondsToSelector:@selector(setFullscreen:animated:)]) {
[moviePlayer.view removeFromSuperview];
}
[moviePlayer release];
}
else if (reason == MPMovieFinishReasonPlaybackError) {
//error
}
}
当点击“完成”按钮后,视频的画面从屏幕中消失了,但是控件没有从屏幕中移除,视图也没有从屏幕中移除。在"//用户点击完成按钮"处会执行用于将视图从父视图中移除的代码,我通过添加日志进行了检查,但是控件没有从屏幕中移除,视图也没有从屏幕中移除。我做错了什么?
编辑:
如果我使用MPMoviePlayerViewController,那么它甚至不需要等待我按下“完成”按钮。一旦视频播放完毕,它就会自动删除视图。但我不想要这样。
编辑:
如果我删除“[mPlayer setFullscreen:YES animated:YES]”,然后点击“完成”后,视图会完全被移除。但是视频不会全屏显示,状态栏变灰,这也不是我想要的。