2012-10-18 102 views
5

我顯然沒有理解如何使用狀態欄色調在IOS 6我已經閱讀了這個問題: Change statusbar tint colour 但落實解決的建議,還沒有解決這個問題。狀態欄色調顏色變爲黑色在iOS 6中

我已經在目標摘要窗格(樣式和着色的默認設置)中配置了設置,並將狀態欄色調參數字典添加到了我的info.plist中,如WWDC 2012高級外觀自定義中所述。

我的狀態欄在啓動時色調正確,但是一旦我導航到另一個視圖控制器,狀態欄將變爲黑色。

第二個視圖控制器被嵌入到它自己的導航控制器中。這可能是問題的根源嗎?

不管是什麼原因,我希望有人能夠提供一個解決方案,使我可以在整個應用程序中使我的狀態欄保持一致。

請讓我知道是否需要澄清,並提前感謝您的任何幫助。

回答

13

今天我遇到了同樣的問題,但沒有任何的sugested答案會幫助我。由於我定義了自己的顏色(紅色,藍色,綠色,alpha),我不想通過IB添加UIStatusBar,所以我需要一個單線解決方案。

測試了之後雖然下面的工作對我來說:

  1. 在項目摘要選擇狀態欄式的黑色Transculent從下拉菜單。
  2. application: didFinishLaunchingWithOptions:輸入下面的代碼行:

    self.window.backgroundColor = [UIColor redColor]; //example color

不知怎的,這不會對我在application: didFinishLaunchingWithOptions:

享受通過代碼設置樣式時,工作!

+1

謝謝,如果狀態欄的樣式設置爲這樣的話,這可以工作: application.statusBarStyle = UIStatusBarStyleBlackTranslucent。 – geraldWilliam

+0

感謝您的回覆!你是對的,我會編輯我的答案! – pmk

+0

非常感謝!我已經擔心我必須使用uinavigationbar方法,因爲我使用多個導航欄並在它們之間切換導致狀態欄顏色消失,所以我的項目會非常糟糕。這很好! – fellowworldcitizen

0

第二視圖控制器嵌入在其自己的導航 控制器中。這可能是問題的根源嗎?

這是最有可能的問題 - 但我也會認爲plist條目會使它成爲全球性的。 你是否嘗試過使用UIAppearance(假設你只支持ios6 +)以編程方式設置它?

[[UITabBar appearance] setTintColor:[UIColor redColor]]; 
+0

如果我沒有弄錯,iOS 6中的狀態欄從UINavigationBar派生它的色彩,而不是UITabBar。我已經使用外觀協議設置了導航欄的外觀(實際上它在iOS 5+中可用)。導航欄的自定義圖像在整個應用程序中按預期顯示。但是,在初始導航控制器從視圖中移除後,狀態欄無法從導航欄中獲取色調。即使導航回到狀態欄,狀態欄仍爲黑色。 – geraldWilliam

+0

對不起,你是正確的,它應該是UINavigationBar。 –

1

一種解決方案是在界面前放置一個不可見的導航欄。如果您已經在導航界面中,則可能必須繼承UINavigationController。例如:

UINavigationBar* nav = [[UINavigationBar alloc] initWithFrame:CGRectMake(0,0,320,1)]; 
nav.tintColor = [UIColor redColor]; 
nav.alpha = 0; 
[self.navigationBar.superview addSubview:nav]; 

無論導航欄的色調或背景顏色如何,都會導致狀態欄變爲紅色。這也適用於沒有導航欄的情況。

信貸到期的貸方;我的想法是將alphahttps://stackoverflow.com/a/13587525/341994設置爲0。