2010-05-20 34 views
3

我有一個可怕的時間讓這個工作,蘋果開發者論壇一直沒有幫助。iPad狀態欄在視頻播放過程中旋轉後粘住

我有一個播放視頻的應用程序,當顯示電影控件並且iPad被旋轉時,狀態欄會在方向開始之前保持視頻所在的方向。然後在視圖頂部有一個20px的間隙,而狀態欄處於另一個方向。

有沒有人看到這個問題?

任何幫助將不勝感激。

+0

這樣的聲音屬於超級用戶。 – Noldorin 2010-08-19 08:44:51

回答

2

我有同樣的問題,加上我的觀點仍然搞砸後,電影播放器​​窗口模式。我不知道該怎麼全屏播放過程中解決這個問題,但至少在切換回後,開窗就可以修復了狀態欄是這樣的:

  • 在通知回調函數註冊一個觀察員MPMoviePlayerWillExitFullscreenNotification
  • ,啓動一個NSTimer調用另一個函數的一位(像0.1S)後
  • 在定時器功能做

    [[UIApplication的sharedApplication] setStatusBarOrientation:[[的UIDevice currentDevice]取向]動畫:NO];

2

我有同樣的問題:在縱向

  • 啓動應用程序(例如)
  • 推出視頻播放器(我們使用presentModalViewController顯示)。
  • 旋轉iPad
  • 按'完成'退出視頻。

Bam!我們的應用程序佈局被破壞了(我們爲每個方向做了一些自定義佈局),並且狀態欄位於錯誤的地方,儘管在視頻中處於正確位置。

我做了兩件事情要解決兩個問題:

  • 確保我們的自定義配置,這是在做viewWillAppear,之後調用[super viewWillAppear];完成。
  • 執行MPMoviePlayerDidExitFullscreenNotificationMPMoviePlayerPlaybackDidFinishNotification的觀察者(在我的案例中點擊「完成」時,第一個人從未被調用過)。

對觀察者的回調的代碼看起來像這樣:

[self performSelector: @selector(checkAndFixStatusBar) 
      withObject: nil 
      afterDelay: 0]; 

[[NSNotificationCenter defaultCenter] removeObserver: self]; 

和最終的方法,故意0延遲後叫:

- (void)checkAndFixStatusBar 
{ 
    UIInterfaceOrientation intOrient = self.interfaceOrientation; 
    UIInterfaceOrientation sbOrient = [[UIApplication sharedApplication] statusBarOrientation]; 

    if (intOrient != sbOrient) 
    { 
     [[UIApplication sharedApplication] setStatusBarOrientation: intOrient animated: NO]; 
     NSLog(@"Fixed status bar orientation"); 
    } 
} 

仍然是可感知的閃爍狀態欄,但這是我想出的最好的。

希望這會有所幫助。

編輯:我已經刪除了performSelector步驟,並直接調用狀態欄設置,在我的情況下,它沒有明顯的區別(仍閃爍)。