title: UIStatusBarStyle doesn't change
body: <p>I'm working on a swift app and I wanna change the <code>UIStatusBarStyle</code> according to the app's theme (there are 2 options - light and dark theme). I have set <code>View controller-based status bar appearance</code> to <code>NO</code> in the <code>info.plist</code> and in the <code>UIViewController</code> I tried to set it based on the current theme like so: </p>
  
  <pre><code>override var preferredStatusBarStyle: UIStatusBarStyle {
      return Theme.current.statusBarStyle
  }
  
  
  protocol ThemeProtocol { 
      // Status Bar
      var statusBarStyle: UIStatusBarStyle { get } 
  }
  
  class Theme {
      static var current: ThemeProtocol = LightTheme()
  }
  
  class LightTheme: ThemeProtocol {
      // Status Bar 
      var statusBarStyle: UIStatusBarStyle = .default
  
  }
  
  class DarkTheme: ThemeProtocol {
      // Status Bar 
      var statusBarStyle: UIStatusBarStyle = .lightContent
  
  }
  </code></pre>
  
  <p>No result really. I tried to test it by returning only: <code>return .lightContent</code> but that didn't change the status bar either. </p>
  
  <p>What am I doing wrong? </p>
  
  <p><strong>UPDATE:</strong> </p>
  
  <p>Okay, so this is what I'm trying to do and it's not working.</p>
  
  <pre><code>    fileprivate func applyTheme() {
  
      statusBarStyle = UserDefaults.standard.bool(forKey: SelectedThemeKey) ? .default : .lightContent
      self.setNeedsStatusBarAppearanceUpdate()
  
  }
  
  override var preferredStatusBarStyle: UIStatusBarStyle {
      return statusBarStyle
  }
  </code></pre>
  
  <p>And it's not working. Despite changing the theme, the status bar always remain with the default style. <code>applyTheme()</code> is called in <code>viewDidLoad()</code> and <code>viewWillAppear()</code></p>