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

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

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

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

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


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

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

- (UIStatusBarStyle)preferredStatusBarStyle {
      return UIStatusBarStyleLightContent;
}

點擊進入這個頁面的時候都會執(zhí)行這個方法 preferredStatusBarStyle,
這個設置比較方便,因為不需要改變其他的代碼,但是除非系統(tǒng)的導航欄隱藏了才會有效果

還有一種比較靠譜的設置方法

  • 在工程里的info.plist 文件中添加一項配置

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

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

  • 特定的頁面就用

    - (void)viewDidAppear:(BOOL)animated {
       [super viewDidAppear:animated];
           // 設置狀態(tài)欄為白色
       [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
    }
    
     - (void)viewWillDisappear:(BOOL)animated {
         [super viewWillDisappear:animated];
       // 設置狀態(tài)欄為默認色 
        [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
    }
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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