2

我就遇到了這個問題的iOS 8,其中顯示在上述任何一種情況導航欄錯背景圖片:錯誤的背景圖片

  • 認爲基於控制器的狀態欄外觀設置到YES(默認值),並以模態方式顯示導航控制器。
  • 基於視圖控制器的狀態欄外觀設置爲NO並且狀態欄最初是隱藏的。在這種情況下,導航控制器不需要以模態方式呈現以顯示錯誤的圖像。

爲了分離,其中所述基於控制器視圖狀態欄的外觀設置爲YES(默認值)的問題和導航控制器呈現模態我創建從頭一個測試項目執行以下步驟:

  1. 使用「主/從應用程序」模板創建一個新項目。

  2. 打開Main.storyboard併爲其添加導航控制器。移除其根視圖控制器並將Master View Controller與modal segue連接起來。然後連接Detail View Controller作爲其根視圖控制器。你應該結束了這樣的事:

enter image description here

  • 經由定製外觀代理導航欄背景。使用兩個不同的肖像(UIBarMetricsDefault)和風景(UIBarMetricsCompact)。我使用UIImage上的類別來創建純色圖像。

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
        // Override point for customization after application launch. 
        [[UINavigationBar appearance] setBackgroundImage:[UIImage imageWithColor:[UIColor redColor]] forBarMetrics:UIBarMetricsDefault]; 
        [[UINavigationBar appearance] setBackgroundImage:[UIImage imageWithColor:[UIColor blueColor]] forBarMetrics:UIBarMetricsCompact]; 
    
        return YES; 
    } 
    
  • 運行應用程序。主視圖控制器顯示在右側導航欄背景圖像縱向和橫向:

  • enter image description here

    enter image description here

  • 現在提出的詳細視圖控制器模態。爲此,請點擊「添加」按鈕,然後選擇新創建的行。詳細視圖控制器顯示右側導航欄背景圖像。

  • 旋轉接口。的詳細視圖控制器將變化導航欄背景圖像():

  • enter image description here

  • 旋轉界面回到其原始取向。詳細信息視圖控制器將改變導航欄背景圖片(錯誤):
  • enter image description here

    有沒有其他人有這個掙扎?

    回答

    2

    是的,我一直在努力,在目標的plist文件中添加"View controller-based status bar appearance"後,它在iOS 8上再次運行,請記住將其設置爲NO

    在MasterViewController中,當detailViewController被解除時,添加此以避免錯誤的背景圖像。它基本上再次設置相同的外觀。

    - (void)viewDidAppear:(BOOL)animated 
    { 
        [super viewDidAppear:animated]; 
        [[UINavigationBar appearance] setBackgroundImage:[UIImage imageWithColor:[UIColor redColor]] forBarMetrics:UIBarMetricsDefault]; 
        [[UINavigationBar appearance] setBackgroundImage:[UIImage imageWithColor:[UIColor blueColor]] forBarMetrics:UIBarMetricsCompact]; 
    } 
    
    +0

    +1。這*幾乎*解決了這個問題(如果你願意放棄基於視圖控制器的狀態欄外觀)。現在,當詳細視圖控制器旋轉時,顯示**右導航欄背景圖像。但是,當詳細視圖控制器被解散(至少一次旋轉後)時,主視圖控制器將顯示錯誤的**導航欄背景圖像(直到再次旋轉界面)。同樣的事情發生在你身上嗎? – albertamg 2014-10-27 12:03:54

    +0

    是的,它也發生在我身上,請參閱編輯。 – gabbler 2014-10-27 13:05:29

    +0

    感謝您與我分享您的知識。這可以解決問題,如果狀態欄是**不是**最初隱藏。我接受你的答案,儘管它比一個乾淨的解決方案更像一個討厭的bug的解決方法。 – albertamg 2014-10-27 15:55:24