2014-04-28 244 views
1

嗨我正在開發小型IOS應用程序,我正在使用簡單的一個窗口與導航控制器。我想要做的是將狀態欄顏色更改爲白色。爲此我做了以下事情。更改IOS7狀態欄內容顏色

[self.navigationController.navigationBar setBarTintColor:[UIColor redColor]]; 
[self.navigationController.navigationBar setBarStyle:UIBarStyleBlackTranslucent]; 
[self.navigationController.navigationBar setTintColor:[UIColor whiteColor]]; 

它工作正常。 enter image description here

但現在我不想導航欄和我隱藏self.navigationController.navigationBarHidden = YES;

它消除了導航欄,但它並不適用白顏色主題,以我的狀態欄。它又變成黑色。

enter image description here

我不想導航欄,但我想改變狀態欄內容爲白色。這個怎麼做。需要幫忙。謝謝。

+1

的Android?看起來像iOS到mee。 – rckoenes

回答

3

使用UIStatusBarStyleLightContent

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES]; 

而且,在你的plist文件改變UIViewControllerBasedStatusBarAppearanceNO

NOTE:此問題已被提問。請多關注this等問題。

+0

謝謝您的快速重播。這個解決方案不適合我。因爲我隱藏了導航欄。如果我有導航欄可見,那麼它工作正常。但是,如果我隱藏它,那麼它不工作。需要幫忙。謝謝。 – nilkash

+0

你把這段代碼放在你的哪裏? – n00bProgrammer

+0

在Plist文件中,我將UIViewControllerBasedStatusBarAppearance放在NO和appdelegate文件中,我把上面的代碼 – nilkash

0

這可以簡單地完成。請查看這些StackOverflow鏈接以查看最適合您的內容。我的建議是看更多。狀態欄默認情況下,在iOS的7透明取得所以我們需要將這些程序,使它看起來就像是之前的iOS 7

Status bar and navigation bar issue in IOS7

How to set Status bar background color iOS 7

+0

感謝您的快速回復。你可否請檢查問題一次正確。我嘗試了一些正在工作的東西如果我在我的視圖中有導航欄。但是,如果我設置導航欄隱藏它不能正常工作。它仍然以黑色顯示狀態欄的內容。所以我需要解決方案。其他方面如果我選擇導航欄,那麼它的工作正常。需要幫忙。謝謝。 – nilkash

1

你可以設置一個UIView與在狀態欄的顏色,看看這個:

UIView *temporaryStatusBar = [[UIView alloc] initWithFrame:[[UIApplication sharedApplication] statusBarFrame]]; 
temporaryStatusBar.backgroundColor = [UIColor greenColor]; 
[self.window addSubview:temporaryStatusBar]; 
+0

我試過了。它只會更改狀態欄的背景顏色,但不會將文本顏色更改爲白色。 – nilkash

+0

爲你需要改變狀態欄風格的文本顏色爲UIStatusBarStyleLightContent 這種風格會給你一個白色文本 – Atrash

+0

是的,我試過,以及它工作正常,如果我的導航欄不隱藏。但是,如果隱藏導航欄,那麼它將無法工作。請仔細閱讀問題。 – nilkash

0

你應該使用:

self.navigationController.navigationBar.hidden = YES; 

代替:

self.navigationController.navigationBarHidden = YES; 

NavigationBar隱藏行爲可奇怪的是,如果UIViewController是孩子的UINavigationController的viewController。

貝婁的評論是從@Tyson研究和@ ing0在此answer: 對於使用一個UINavigationController人:

UINavigationController不轉發上 preferredStatusBarStyle調用其子視圖控制器。相反 它管理自己的狀態 - 因爲它應該是,它正在 頂部繪製狀態欄所在的屏幕,所以它應該負責 它。因此,在 內的VC中實施preferredStatusBarStyle,導航控制器將不會執行任何操作 - 它們將不會被調用。

的訣竅是什麼UINavigationController使用決定如何 回報UIStatusBarStyleDefaultUIStatusBarStyleLightContent。它基於它的 UINavigationBar.barStyle。默認(UIBarStyleDefault)結果 在黑暗的前景UIStatusBarStyleDefault狀態欄。而 UIBarStyleBlack會給出一個UIStatusBarStyleLightContent狀態 吧。

TL; DR:

如果你想在一個 UINavigationController使用UIStatusBarStyleLightContent

self.navigationController.navigationBar.barStyle = UIBarStyleBlack;