我就遇到了這個問題的iOS 8,其中顯示在上述任何一種情況導航欄錯背景圖片:錯誤的背景圖片
- 認爲基於控制器的狀態欄外觀設置到
YES
(默認值),並以模態方式顯示導航控制器。 - 基於視圖控制器的狀態欄外觀設置爲
NO
並且狀態欄最初是隱藏的。在這種情況下,導航控制器不需要以模態方式呈現以顯示錯誤的圖像。
爲了分離,其中所述基於控制器視圖狀態欄的外觀設置爲YES(默認值)的問題和導航控制器呈現模態我創建從頭一個測試項目執行以下步驟:
使用「主/從應用程序」模板創建一個新項目。
打開
Main.storyboard
併爲其添加導航控制器。移除其根視圖控制器並將Master View Controller與modal segue連接起來。然後連接Detail View Controller作爲其根視圖控制器。你應該結束了這樣的事:
經由定製外觀代理導航欄背景。使用兩個不同的肖像(
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; }
運行應用程序。主視圖控制器顯示在右側導航欄背景圖像縱向和橫向:
現在提出的詳細視圖控制器模態。爲此,請點擊「添加」按鈕,然後選擇新創建的行。詳細視圖控制器顯示右側導航欄背景圖像。
旋轉接口。的詳細視圖控制器將不變化導航欄背景圖像(錯):
- 旋轉界面回到其原始取向。詳細信息視圖控制器將改變導航欄背景圖片(錯誤):
有沒有其他人有這個掙扎?
+1。這*幾乎*解決了這個問題(如果你願意放棄基於視圖控制器的狀態欄外觀)。現在,當詳細視圖控制器旋轉時,顯示**右導航欄背景圖像。但是,當詳細視圖控制器被解散(至少一次旋轉後)時,主視圖控制器將顯示錯誤的**導航欄背景圖像(直到再次旋轉界面)。同樣的事情發生在你身上嗎? – albertamg 2014-10-27 12:03:54
是的,它也發生在我身上,請參閱編輯。 – gabbler 2014-10-27 13:05:29
感謝您與我分享您的知識。這可以解決問題,如果狀態欄是**不是**最初隱藏。我接受你的答案,儘管它比一個乾淨的解決方案更像一個討厭的bug的解決方法。 – albertamg 2014-10-27 15:55:24