全屏问题MPMoviePlayerController(显示空白黑屏)

时间:2012-06-15 02:30:12

标签: ios window mpmovieplayercontroller fullscreen

我有tabBarViewController,它包含几个页面和一个loginViewController。我使用[window addSubView:]添加视图。

当我需要播放全屏视频时,我必须删除窗口中的所有视图才能显示视频,否则,它只是一个黑屏。当视频停止/完成/退出全屏时,我必须再次手动将子视图添加回窗口。

我知道这是一种错误的做法。如果我没有这样做,当视频切换到全屏时,它将显示在根窗口视图中,在其他视图的后面。

请提出一些建议。谢谢。

以下是我的代码:

-(void)playMovie:(NSString *)urlStr{
NSURL *fileURL = [NSURL URLWithString:urlStr];
player = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];
player.scalingMode = MPMovieScalingModeAspectFit;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterFullscreen:) name:MPMoviePlayerWillEnterFullscreenNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willExitFullscreen:) name:MPMoviePlayerWillExitFullscreenNotification object:nil];    
[[appDelegate loginViewController].view removeFromSuperview];
[[appDelegate tabBarController].view removeFromSuperview];
[[appDelegate navController].view addSubview:player.view];
player.fullscreen = YES;
[player play];

}

- (void)willExitFullscreen:(NSNotification*)notification {
NSLog(@"willExitFullscreen...");
[[appDelegate window] addSubview:[appDelegate navController].view];
[[appDelegate window] addSubview:[appDelegate loginViewController].view];
[[appDelegate window] addSubview:[appDelegate tabBarController].view];
[player.view removeFromSuperview];

}

1 个答案:

答案 0 :(得分:0)

呈现玩家使用:

[self presentMoviePlayerViewControllerAnimated:player]; 
//Self should be a View Controller.

而不是使用addSubview

此外,您应确保在movieSourceType上设置player(您可以通过player.moviePlayer访问),并建议使用{{1}设置播放器背景避免闪烁的白色背景。