Пользовательская строка состояния UINavigationBar не включает фоновое изображение - PullRequest
0 голосов
/ 05 мая 2018

Я пытаюсь установить фоновое изображение для UINavigationBar, но строка состояния всегда белого цвета

Результат

enter image description here

Мой код

self.navigationController?.navigationBar.setBackgroundImage(UIImage(named:"bg_nav")?.resizableImage(withCapInsets: UIEdgeInsets.zero, resizingMode: .stretch), for: .default)

Ожидаемое заполнение фонового изображения, включая строку состояния

enter image description here

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Вы можете сделать так

extension UINavigationController{

   func setNavBarImage(_ image:UIImage?) {

       guard let image = image  else {return}

       self.navigationBar.setBackgroundImage(image, for: .default)
       self.navigationBar.shadowImage = UIImage()
      self.navigationBar.isTranslucent = true

      //clear statusBar color
       let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView
       statusBar?.backgroundColor = UIColor.clear
    }
}

А во ViewController используется вот так

 self.navigationController?.setNavBarImage(UIImage(named: "NavigationBar"))

Результат

enter image description here

0 голосов
/ 05 мая 2018

Просто добавьте функцию ниже в ваш viewController, где вам нужно изменить внешний вид строки состояния.

func setStatusBarBackgroundColor(color: UIColor) {
    guard let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView else { return }
    statusBar.backgroundColor = color
}

использует: self.setStatusBarBackgroundColor (цвет: yourColor )

Вы можете применить это ко всему приложению, используя общий viewController и сделать это viewController для подкласса других viewController'ов, используя этот подход, вам не нужно снова писать этот код.

...