UIStatusBar背景和字體

在工作中經(jīng)常用修改StatusBar的背景和字體顏色,下面介紹一下StatusBar到底為何物?
從整個(gè)UIWindow的曾經(jīng)結(jié)構(gòu)圖中,可以看出,StatusBar的級(jí)別比較高(猜測(cè)StatusBar level = UIWindowLevelStatusBar ),是高于當(dāng)前navigationBar,所以看到的頁面,StatusBar都是在navigationBar上面。
但是,我們?nèi)绾涡薷?code>StatusBar的背景和字體顏色?

ios中提供了相應(yīng)的API,只需要更改statusBarStyle即可。
1、在AppDeledate中修改

[[UIApplication sharedApplication] setStatusBarStyle:<#(UIStatusBarStyle)#>]

但是如果在appDeledate中修改,必須在info.plist中更改View controller-based status bar appearance設(shè)置為NO

在工程的info.plist文件中,添加View controller-based status bar appearance項(xiàng),并設(shè)置該項(xiàng)的值設(shè)為YES,則View controller對(duì)status bar的設(shè)置優(yōu)先級(jí)高于application的設(shè)置。 設(shè)為NO,則以application的設(shè)置為準(zhǔn),view controllerprefersStatusBarHidden方法無效,是根本不會(huì)被調(diào)用的

2、在viewController中修改在viewController中只需要實(shí)現(xiàn)幾個(gè)方法就可以

///設(shè)置status bar是否隱藏
- (BOOL)prefersStatusBarHidden { return NO;}
/// 控制status bar style。是否顯示白色字體- (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent;}

當(dāng)然剛才在文章開始的時(shí)候,就闡明了status bar level是最高的,和navigation bar是沒有父子關(guān)系的,但是,當(dāng)我們更改statusbar的背景顏色的時(shí)候,只需要通過

self.navigationController.navigationBar.barTintColor = [UIColor redColor];

NavigationBar的層次結(jié)構(gòu)列出來更好的闡釋

[ 3] UINavigationBar
——–[ 4] UINavigationBarBackground
——–-[ 5] UIBackdropView
———-[ 5] UIImageView
———-[ 5] UIButtonLabe

當(dāng)設(shè)置barTintColor的時(shí)候,其實(shí)更改是UIBackdropView的背景顏色。是把整個(gè)navigation bar設(shè)置了背景顏色,從視覺上面看也給status bar設(shè)置背景。

ios9中,已經(jīng)不提倡在AppDeledate中設(shè)置status bar的信息,比如 是否隱藏,改變成白色以后的工作如果遇到其他關(guān)于status bar的問題,再做補(bǔ)充吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容