本文直接開干性,需要知道的原理的簡書很多文章都寫的很詳細(xì),自行搜索。
一、iOS9 以前只需要設(shè)置
step1.修改plist文件View controller-based status bar appearance = NO
step2.
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
二、iOS9 以后,蘋果廢棄了以上方法,改用- (UIStatusBarStyle)preferredStatusBarStyle
step1.修改plist文件View controller-based status bar appearance = YES
step2.在需要修改的VC里面,直接調(diào)用preferredStatusBarStyle
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
三、如果需要全局設(shè)置
step1.修改plist文件View controller-based status bar appearance = YES
step2.搞一個(gè)baseVC,調(diào)用preferredStatusBarStyle,全局的狀態(tài)都改了,其他VC繼承不繼承baseVC都沒有關(guān)系。
****注意:-->由此可得出,
1>只要在一個(gè)vc里面調(diào)用了preferredStatusBarStyle,那所有的vc都改了,
2>最先顯示到windon上的vc調(diào)用了preferredStatusBarStyle,如果返回了白色,那其他的vc就算調(diào)用也不會(huì)改變,還是白色。
四、大部分狀態(tài)欄顏色一致,部分不一樣的設(shè)置
step1.修改plist文件View controller-based status bar appearance = YES
setp2.在最先顯示到windon上的vc上調(diào)用preferredStatusBarStyle,或者是baseVC,返回需要的顏色。
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
setp3.注意這里是關(guān)鍵,每個(gè)項(xiàng)目都有自己的自定義UINavigationController類,或者分類;在導(dǎo)航類里面調(diào)用:
- (UIViewController *)childViewControllerForStatusBarStyle{
return self.visibleViewController;
}
- (UIViewController *)childViewControllerForStatusBarHidden{
return self.visibleViewController;
}
setp4.在需要不一樣的vc里面再調(diào)用preferredStatusBarStyle返回需要的狀態(tài)欄顏色
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleDefault;
}