Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Preferred status bar style of view controller is ignored when in navigation controller

Tags:

ios

uikit

I'm writing an iOS App with multiple views. I've set the App to use ViewController-based status bar style, which allows me to use the following code

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
} 

That worked like expected.

But then I've embedded the views in a navigation controller and connected a BarButtonItem with a showSegue. Since then the ViewController of the view switched to ignores the style settings and shows the default black status bar.

like image 987
Kevin H. Klein Avatar asked Sep 09 '25 15:09

Kevin H. Klein


1 Answers

When you're in a navigation controller that will not get called. The navigation controller's preferredStatusBarStyle will be called. Try this along with your code:

extension UINavigationController {

   open override var preferredStatusBarStyle: UIStatusBarStyle {
      return topViewController?.preferredStatusBarStyle ?? .default
   }
}
like image 78
rmickeyd Avatar answered Sep 13 '25 05:09

rmickeyd