Change Status bar color for UINavigationBar

Mr.Javed Multani
1 min readOct 3, 2020

Subclass UINavigationController and then override these methods:

In Objective-C:

- (UIStatusBarStyle)preferredStatusBarStyle
{return UIStatusBarStyleLightContent;
}

In Swift:

override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .lightContent
}

Alternatively, you can set barStyle on the UINavigationBar instance:

Objective C:

// e.g. in your view controller’s viewDidLoad method: self.navigationController.navigationBar.barStyle = UIBarStyleBlack; // this will give you a white status bar

Swift

// e.g. in your view controller's viewDidLoad method:
navigationController?.navigationBar.barStyle = .black // this will give you a white status bar

UIBarStyle options are default, black, blackOpaque, blackTranslucent. The latter 3 should all give you a status bar with white text, just the last two specify the opacity of the bar.

Mr.Javed Multani

Software Engineer | Certified ScrumMaster® (CSM) | UX Researcher | Youtuber | Tech Writer