Upvote:10

Aprove answer
extension UINavigationController {
    open override var childViewControllerForStatusBarStyle: UIViewController? {
        return self.topViewController
    }

    open override var childViewControllerForStatusBarHidden: UIViewController? {
        return self.topViewController
    }
}

Upvote:0

override func viewWillAppear(_ animated: Bool) {
  super.viewWillAppear(animated)

  self.navigationController?.navigationBar.barStyle = .blackTranslucent
  self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.white]
}

override var preferredStatusBarStyle: UIStatusBarStyle {
  return .lightContent
}

Credit Goes to: stackoverflow.com

Related question with same questions but different answers