MPMoviePlayerViewController隐藏状态栏
我有一个iPad应用程序,它可以创建并显示带有MPMoviePlayerViewController
的视频。这里是我的代码: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, 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];
}
你可以在你的plist设置UIStatusBarHidden,应该解决它:)
UIStatusBarHidden。不,它没有帮助。 – 2011-06-21 13:41:18
隐藏整个应用程序的状态栏,使其在电影播放时不会出现,这不是一个合适的解决方案。 – 2012-03-28 16:28:22
回答这个问题有一个最后的错误:
_player = nil; [_player release];
这些应该是相反的:
[_player release]; _player = nil;
消息零释放没有效果。
不适用于我。 – Boon 2015-11-06 21:09:39