2010-09-15 115 views
14

我有一個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:)。

有人能指點我一個簡單的(證明)的方式來顯示沒有狀態欄的視頻?

謝謝。

回答

2

剛剛意識到的問題是,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]; 
} 
+0

不適用於我。 – Boon 2015-11-06 21:09:39

-3

你可以在你的plist設置UIStatusBarHidden,應該解決它:)

+0

UIStatusBarHidden。不,它沒有幫助。 – 2011-06-21 13:41:18

+0

隱藏整個應用程序的狀態欄,使其在電影播放時不會出現,這不是一個合適的解決方案。 – 2012-03-28 16:28:22

0

回答這個問題有一個最後的錯誤:

 
_player = nil; 
[_player release]; 

這些應該是相反的:

 
[_player release]; 
_player = nil; 

消息零釋放沒有效果。