vicki753's iOS 基礎(chǔ) - 狀態(tài)欄的顏色設(shè)置

首先了解navBar的style是會(huì)影響狀態(tài)欄顏色的

self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
// UIBarStyleDefault 狀態(tài)欄會(huì)顯示黑色, UIBarStyleBlack 狀態(tài)欄顯示白色,而且,注意這樣的設(shè)置,深色模式的動(dòng)態(tài)顏色也是有效果的,UIBarStyleBlack 會(huì)顯示深色模式的顏色,但可能是系統(tǒng)bug,深色模式后它也不會(huì)根據(jù)當(dāng)前是淺色模式而去改變顏色,它會(huì)認(rèn)為你就是需要深色模式self.navigationController.navigationBar.barTintColor = kDEEP_BLUE_COLOR;
kDEEP_BLUE_COLOR 是動(dòng)態(tài)顏色,淺色模式是藍(lán)色,深色模式是深灰色,因?yàn)閁IBarStyleBlack的設(shè)置,在navbar隱藏后,再顯示出來的時(shí)候它就顯示為 深灰色

執(zhí)行順序也會(huì)影響設(shè)置的狀態(tài)欄顏色

如果是系統(tǒng)的方法先走(黑色),頁面的方法后走(白色),就會(huì)遵循頁面的方法(白色),反之則會(huì)相反


Screen Shot 2020-07-21 at 11.30.55 AM.png

這個(gè)是app啟動(dòng)后的堆棧 我在BSMyAccountViewController中打了斷點(diǎn),并且發(fā)現(xiàn)這個(gè)方法調(diào)用了好幾次

- (UIStatusBarStyle)preferredStatusBarStyle {
      return UIStatusBarStyleLightContent;
}

點(diǎn)擊進(jìn)入這個(gè)頁面的時(shí)候都會(huì)執(zhí)行這個(gè)方法 preferredStatusBarStyle,
這個(gè)設(shè)置比較方便,因?yàn)椴恍枰淖兤渌拇a,但是除非系統(tǒng)的導(dǎo)航欄隱藏了才會(huì)有效果

還有一種比較靠譜的設(shè)置方法

  • 在工程里的info.plist 文件中添加一項(xiàng)配置

View controller-based status bar appearance 設(shè)置為NO (不要YES,YES就無效了)

  • 全局就設(shè)置在appDelegate里面,或者你其他基類
    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

  • 特定的頁面就用

    - (void)viewDidAppear:(BOOL)animated {
       [super viewDidAppear:animated];
           // 設(shè)置狀態(tài)欄為白色
       [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
    }
    
     - (void)viewWillDisappear:(BOOL)animated {
         [super viewWillDisappear:animated];
       // 設(shè)置狀態(tài)欄為默認(rèn)色 
        [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
    }
    
最后編輯于
?著作權(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ù)。

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