本文直接開干性,需要知道的原理的簡書很多文章都寫的很詳細(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.搞一個baseVC,調(diào)用preferredStatusBarStyle钳榨,全局的狀態(tài)都改了舰罚,其他VC繼承不繼承baseVC都沒有關(guān)系。
****注意:-->由此可得出薛耻,
1>只要在一個vc里面調(diào)用了preferredStatusBarStyle营罢,那所有的vc都改了,
2>最先顯示到windon上的vc調(diào)用了preferredStatusBarStyle饼齿,如果返回了白色饲漾,那其他的vc就算調(diào)用也不會改變,還是白色缕溉。
四考传、大部分狀態(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)鍵枉层,每個項(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;
}