一般我們開發(fā)的時(shí)候模孩,app運(yùn)行起來,狀態(tài)欄的文字顏色是黑色的简肴。但是有些項(xiàng)目卻要求狀態(tài)欄顏色要白色晃听,上網(wǎng)搜索了一下,測試并總結(jié)了一下好用的方法:(測試環(huán)境砰识,xcode8能扒,ios10)
方法一:
在info.plist文件上添加兩個(gè)字段:
第一個(gè):key為 "View controller-based status bar appearance",類型為"Boolean"辫狼,value為:"NO"初斑;
第二個(gè):key為"Status bar style",類型為"String"膨处,value為"Opaque black style"(白色)见秤。
(ps:第二個(gè)字段的值是可以選擇的,除了將值設(shè)置為Gray style (default)時(shí)文字為黑色之外真椿,其他都為白色秦叛。除此之外,還可以直接手動(dòng)輸入系統(tǒng)的枚舉類型("UIStatusBarStyle")的值:)
上個(gè)圖:
"UIStatusBarStyle"的定義如下:(四個(gè)值中瀑粥,設(shè)置為第一個(gè)值之后文字為黑色挣跋,其他三個(gè)都為白色,系統(tǒng)默認(rèn)為黑色)
typedef NS_ENUM(NSInteger, UIStatusBarStyle) {
UIStatusBarStyleDefault = 0, // 黑色字體
UIStatusBarStyleLightContent NS_ENUM_AVAILABLE_IOS(7_0) = 1, // 白色字體
UIStatusBarStyleBlackTranslucent NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 1,
UIStatusBarStyleBlackOpaque NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 2,
} __TVOS_PROHIBITED;
方法二:(據(jù)說ios9之后都用這個(gè)方法了)
首先狞换,在info.plist文件上添加一個(gè)字段:
字段的key為 "View controller-based status bar appearance"避咆,類型為"Boolean",value為:"YES"修噪;(和上面的方法的值不一樣)
接著查库,在你所要設(shè)置的UINavigationController的rootViewController中加上下面的代碼:
-(UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
或者說你自定義了一個(gè)NavigationController繼承自系統(tǒng)的NavigaitionController,那么在你自己自定義的Nav中添加上面的代碼也可以黄琼。代碼中函數(shù)返回的值參考方法一中貼出的枚舉"UIStatusBarStyle"的值樊销。
還有一點(diǎn),ios9以前設(shè)置的方法。
具體和方法一大同小異围苫,只是用代碼實(shí)現(xiàn)的罷了裤园。
首先,在info.plist文件上添加一個(gè)字段:
字段的key為 "View controller-based status bar appearance"剂府,類型為"Boolean"拧揽,value為:"NO";
之后在AppDelegate中添加下面代碼:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
(ps:當(dāng)info.plist文件中"View controller-based status bar appearance"設(shè)置為"YES"的時(shí)候腺占,這個(gè)方法會(huì)失效淤袜,只能采用方法二)
這個(gè)方法ios9以后被棄用了,同時(shí)棄用的還有含動(dòng)畫的方法:
@property(readwrite, nonatomic) UIStatusBarStyle statusBarStyle NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController preferredStatusBarStyle]") __TVOS_PROHIBITED;
- (void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle animated:(BOOL)animated NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController preferredStatusBarStyle]") __TVOS_PROHIBITED;
最后衰伯,討論一下"View controller-based status bar appearance"這個(gè)字段铡羡,這個(gè)大概是用來確定是用什么方法來設(shè)置狀態(tài)欄的文字顏色。
當(dāng)值為"YES"的時(shí)候意鲸,就需要在ViewController里面重寫方法-(UIStatusBarStyle)preferredStatusBarStyle來設(shè)置蓖墅。
當(dāng)值為"NO"的時(shí)候,就用 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];來設(shè)置临扮,或者在info.plist文件中設(shè)置论矾。
如果有錯(cuò)誤,歡迎指出杆勇,感激灰常贪壳!