2012-11-27 231 views
1

我有一個標籤欄應用程序,狀態欄的色調設置爲默認 - 所以它始終是我在我的應用程序中選擇的藍色。設置狀態欄色調顏色

然而,在一個視圖中,我躲在我的導航欄,如下所示:

[self.navigationController setNavigationBarHidden:YES]; 

這是viewWillAppear方法和觀點是可訪問的,因爲它是我的應用程序的選項卡之一。

我隱藏它的原因是因爲我想在其位置放置一個工具欄(約6個按鈕)。

我已經設置了我的工具欄的色調顏色,但是,此視圖上的狀態欄始終爲黑色。有沒有辦法重新設置此視圖的狀態欄,或者是否有更好的方法來隱藏導航欄,以保留狀態欄的色調顏色。

UPDATE我在某處看到,當着色設置爲默認狀態時,狀態欄的顏色將是標題中最低像素的顏色。

我試圖隱藏故事板中的導航欄,並嘗試將「色彩」更改爲「自定義」,但這也沒有效果。

這兩個截圖可能會說明我的問題。切換導航欄將更改狀態欄的顏色。這是有問題的觀點被嵌入導航控制器。

​​Without Navigation Bar - black status bar

+0

...所以你的意思是隱藏導航欄改變狀態欄顏色爲黑色? – applefreak

+0

是的,看到更新的答案。 – Patrick

回答

6

啊!我有一個工作解決方案...儘管是一個非常骯髒和臨時解決方案。

  1. 只需隱藏故事板中的導航欄(如問題圖片所示 - 取消選中Shows Navigation Bar)。
  2. 將導航欄拖到視圖中。
  3. 設置它的Alpha爲0,取消User Interaction Enabled - 不要使隱藏
  4. 確保導航欄的頂部 - 如以下的圖像。

    Screen Capture

這樣,你的狀態欄會拿起正確的顏色,而不顯示導航欄。

希望在最近的Xcode更新中有一個更有彈性/更好的方法來做到這一點。

頂部提示:要使工具欄看起來像一個導航欄:

  1. 位置工具欄-1 Y軸
  2. 創建一個標籤(無文本),其高度44px,寬320px,位置0,0。這將是標籤欄的底部邊框。爲獲得最佳效果,請截取您應用的頁面截圖,並使用軟件獲取邊框顏色 - 這是陰影開始之前選項卡最黑暗的部分(使用此顏色作爲標籤的背景)。
+0

:-)有趣! – applefreak

+0

我如何多次提升你的評價? :)我正要在你的工具欄前面建一個像素高的導航欄;這確實有效(http://stackoverflow.com/a/14613259/341994)。但是你的解決方案,一個alpha爲0的導航,是我永遠不會想到的。 – matt

0
Change statusBarStyle of application- 
[[UIApplication sharedApplication] 
     setStatusBarStyle:UIStatusBarStyleDefault animated:NO]; 
+0

我想過這個,但可悲的是沒有效果。 – Patrick

0

如果您使用的是iOS 6.0,你可以通過plist文件設置狀態欄的顏色。見 - How to set status bar tint color on iOS 6?

From iOS 6 release notes;

狀態欄

現在可以設置狀態欄色調參數在應用程序的 Info.plist文件。您可以這樣做,以確保狀態欄顏色 在啓動過程中與您應用的導航欄顏色相匹配。要設置 狀態欄的色調,請將UIStatusBarTintParameters項添加到您的 Info.plist文件中。此密鑰的值是一個字典,其中 適當的值描述了您的應用在 啓動時的導航欄。在字典裏應該是UINavigationBar鍵, ,它的值也是一個字典。該字典包含 初始導航欄的樣式(使用Style鍵),並指示 是否爲半透明(使用半透明鍵)。您還可以使用 指定您的導航欄的色調(使用TintColor鍵)或 其自定義背景圖像的名稱(使用BackgroundImage 鍵)。

[編輯]

似乎在IOS 6中的狀態欄的顏色自動地被導航條顏色確定的。在隱藏導航欄之前,您可以將導航欄的顏色設置爲默認值,然後查看是否有任何區別。

+0

我試過這個,但無濟於事:'[self.navigationController.navigationBar setTintColor:[UIColor redColor]]; [self.navigationController setNavigationBarHidden:YES];' – Patrick