前一段時間接手一個項目后,熟悉的過程中發現了不少問題,其中有一個就是關於狀態欄的問題。
我們都知道:狀態欄字體顏色在不同界面不一樣的,原因是系統設置的時候把狀態欄的字體顏色的界面控制器設置的yes。
那么問題來了,如果我自定義了導航欄,而狀態欄的字體顏色是希望統一顏色,怎么辦?
方法一:我們可以一個界面一個界面的去設置,因為apple已經給出了系統方法:
//默認的值是黑色的
-(UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleDefault; } // 是否隱藏狀態欄
- (BOOL)prefersStatusBarHidden { return NO; }
當然這樣,會很繁瑣,我們也不推薦使用,並且還會出現這種情況:設置后並沒有顯示效果。
方法二:在application中設置狀態欄的字體顏色(推薦使用)
1、系統給出的狀態欄風格
typedef NS_ENUM(NSInteger, UIStatusBarStyle) { UIStatusBarStyleDefault = 0, // Dark content, for use on light backgrounds
UIStatusBarStyleLightContent NS_ENUM_AVAILABLE_IOS(7_0) = 1, // Light content, for use on dark backgrounds
UIStatusBarStyleBlackTranslucent NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 1, UIStatusBarStyleBlackOpaque NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 2, }
2、在application中設置狀態欄的字體顏色代碼
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //設置狀態欄字體顏色
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES]; }
如果只是這樣在設置 application 中設置,並沒有什么用,還需要一些配置才行,具體如下:
在plist文件中添加:View controller-based status bar appearance 並設置為 NO 即可。
這是你再次運行項目,就會發現所有界面的狀態欄字體顏色都一樣。
