我有一个iPad应用程序创建和显示与MPMoviePlayerViewController的视频.这是我的代码:
MPMoviePlayerViewController *mpvc = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:URLEncode(uri)]]; [mpvc setModalTransitionStyle:UIModalTransitionStyleCrossdissolve]; [mpvc setWantsFullScreenLayout:YES]; [<MainViewController> presentModalViewController:mpvc animated:YES];
电影加载/播放工作正常,但是,当电影控制器出现时,它会显示顶部的状态栏(连接,电池,小时),即使我在主窗口中停用了它.
我试过:
[mpvc setWantsFullScreenLayout:YES]; [[UIApplication sharedApplication] setStatusBarHidden:YES];
没有什么似乎工作,不过如果我也放:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent];
状态栏消失!但是电影控制器仍然会像状态栏那样调整大小(即使我已经使用了-setWantsFullScreenLayout :).
有人可以指出一个简单(经过验证)的方式来显示没有状态栏的视频吗?
谢谢.
解决方法
只是意识到这个问题是iPad特有的.我的代码是针对iPhone,但有些可能会帮助你.
几天前我不得不这样做,我认为你的问题在视频开始播放后根本就不会在状态栏上调用隐藏.无论哪种方式,我都有经过验证的代码,其工作范围为3.0到4.2:
- (IBAction) playIntroVideo { Nsstring *videoString = [[NSBundle mainBundle] pathForResource:@"intro" ofType:@"mp4"]; NSURL *videoURL = [NSURL fileURLWithPath:videoString]; _player = [[MPMoviePlayerController alloc] initWithContentURL:videoURL]; if ( [_player respondsToSelector:@selector(view)] && [_player respondsToSelector:@selector(setFullscreen:animated:)] && [_player respondsToSelector:@selector(setControlStyle:)] ) { [[_player view] setFrame:CGRectMake(0,SCREEN_WIDTH,SCREEN_HEIGHT_FULL)]; [_player setFullscreen:YES animated:YES]; [_player setControlStyle:MPMovieControlStyleNone]; [self.view addSubview:[_player view]]; } [_player play]; [[NSNotificationCenter defaultCenter] addobserver:self selector:@selector(terminateVideo) name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; [[UIApplication sharedApplication] setStatusBarHidden:YES]; self.navigationController.navigationBarHidden = YES; } - (void) terminateVideo { [[UIApplication sharedApplication] setStatusBarHidden:NO]; self.navigationController.navigationBarHidden = NO; if ([_player respondsToSelector:@selector(view)]) { [[_player view] removeFromSuperview]; } _player = nil; [_player release]; }