2014-10-02 48 views
2

注: iOS中8,狀態欄會自動隱藏自己在景觀和回來的肖像(僅適用於iPhone)。MPMoviePlayerViewController狀態欄問題的iOS 8特定

爲了證明,我使用XCDYouTubeKit,這是MPMoviePlayerViewController輕包裝在我的應用程序的視頻。

我在Info.plist文件在我的應用程序「NO」,因爲一些功能設置「查看基於控制器的狀態欄外觀」。該應用程序工作正常,直到你不使用XCDYouTubeKit(MPMoviePlayerViewController)。使用XCDYouTubeKit後,應用程序失去上面「註釋」中指定的功能,意味着狀態欄也開始在橫向顯示。

你可以在這裏下載演示項目。

https://www.dropbox.com/s/yp5pkvf9evsl8wb/XCDYouTubeKit%20Demo.zip?dl=0

體驗這個事情,你需要按照XCDYouTubeKit演示以下步驟:

  1. 集Info.plist文件 「查看基於控制器的狀態欄外觀」到「NO」 。
  2. 在iOS 8中打開應用程序並轉到「全屏播放器」。
  3. 將方向更改爲縱向或橫向,反之亦然。您將觀察到狀態欄隱藏在橫向上,而不是縱向顯示。
  4. 現在輕按「全屏播放」按鈕(肖像模式),並讓視圖控制器上來。
  5. 按「完成」按鈕關閉視頻(與方向無關)。
  6. 將方向更改爲縱向或橫向,反之亦然。無論設備方向如何,您都會觀察到狀態欄始終保持在那裏。

請幫助!

回答

2

請注意,苛刻,你可以(有爭議的!)只是使用一個類別的臨時t

只有一次爲整個應用程序。我們每次都會在大批量生產應用程序(在Objective-C時代)中毫無問題地完成它,並且我始終在大批量客戶項目中看到它。 ...所以..

1)創建一個名爲類別正好的UIViewController + HideStatusBar

@interface UIViewController (HideStatusBar) 
@end 
// the only practical approach for no-statusbar in iOS7,8+ 
@implementation UIViewController (HideStatusBar) 
#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation" 
-(BOOL)prefersStatusBarHidden {return YES;} 
-(UIViewController *)childViewControllerForStatusBarHidden {return nil;} 
#pragma clang diagnostic pop 
@end 

2)在你的plist添加

<key>UIStatusBarHidden~ipad</key> 
<true/> 
// that is needed if you're covering iPad; do it always for consistency 

3)不要集「狀態欄初始隱藏「到你的plist中的」YES「。

4)做不是改變UIViewControllerBasedStatusBarAppearance。

擴展discussion

2

我找不到原始問題的解決方案。但我設法實現了最終目標,即狀態欄停止顯示在橫向上(iOS 8 & & iPhone)。

  1. ,因爲我已經通過了應用程序設置狀態風格我設置「基於控制器的視圖狀態欄外觀」爲NO。
  2. 但是由於設置「查看基於控制器的狀態欄外觀」爲NO導致主要問題,我將其刪除,導致狀態欄全黑,但解決了主要問題。
  3. 然後我不得不把在所有獨立視圖控制器以下代碼:

    -(UIStatusBarStyle)preferredStatusBarStyle { 
        return UIStatusBarStyleLightContent; 
    } 
    

和用於其載於UINavigationController那些視圖控制器我從以下問題基準:

preferredStatusBarStyle isn't called

+0

謝謝@JoeBlow我完全同意你的評論。它的效率。請發佈它作爲答案。我會選擇它。 – harshitgupta 2015-05-07 18:08:06