天天看點

Status bar —— 設定狀态欄的顯示、隐藏、背景顔色、文字顔色

一、設定狀态欄顯示和隐藏

1、通過 Info.plist 檔案增加字段,控制狀态欄全局顯示和隐藏

  • 在 Info.plist 檔案中增加字段 Status bar is initially hidden  設定為 YES ,那麼 app 在 LaunchScreen 頁面隐藏狀态欄
  • 在 Info.plist 檔案增加字段 View controller-based status bar appearance 設定為 YES,那麼app預設所有頁面都會顯示狀态欄

2、通過代碼,控制狀态欄全局顯示和隐藏

  • 在 Info.plist 檔案 View controller-based status bar appearance 設定為 NO時,代碼設定狀态欄才會起作用。
  • 在 AppDelegate.m 中添加代碼 [[UIApplication sharedApplication] setStatusBarHidden:NO];

3、通過代碼,控制狀态欄局部顯示和隐藏

  • 在 Info.plist 檔案 View controller-based status bar appearance 設定為 YES
  • 在需要隐藏狀态欄的VC中重寫寫法 - (BOOL)prefersStatusBarHidden { return YES;},傳回YES

二、設定狀态欄顔色

1、全局文字顔色:在 Info.plist 增加key值 Status bar style,value可以設定 UIStatusBarStyleDefault (預設黑色)和 UIStatusBarStyleLightContent (白色)。

2、全局文字顔色:在 Info.plist 檔案 View controller-based status bar appearance 設定為 NO時,且在 AppDelegate.m 中添加2行代碼 [[UIApplication sharedApplication] setStatusBarHidden:NO];   [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 即可!注意:此處 Info.plist中添加的key值對應的value必須為NO,若為YES,則代碼不起作用。

3、局部文字顔色:此處分2種不同情況

首先設定,在 Info.plist 檔案 View controller-based status bar appearance 設定為 YES

a. ViewController 不嵌套在 UINavigationController 中,需要設定以下

重寫 UIViewController 方法 

- (UIStatusBarStyle)preferredStatusBarStyle { 
    return UIStatusBarStyleDefault; 
}
           

b. ViewController 為 UINavigationController 的rootVC,需要設定以下

繼承 UINavigationController 寫一個子類,然後重寫方法:                

- (UIStatusBarStyle)preferredStatusBarStyle {
    return self.topViewController.preferredStatusBarStyle;
}
           

關于以上狀态欄的顯示和隐藏、文字或背景顔色均為親測,若存在問題,麻煩留言@我!