iOS狀態(tài)欄顏色修改

本文直接開干性,需要知道的原理的簡書很多文章都寫的很詳細(xì),自行搜索。

一、iOS9 以前只需要設(shè)置

step1.修改plist文件View controller-based status bar appearance = NO


iso9.png

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;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容