0

我正在尝试设置背景图像,UINavigationBar但状态栏始终为白色

结果

在此处输入图像描述

我的代码

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

预期结果图像背景填充包括状态栏

在此处输入图像描述

4

2 回答 2

0

你可以这样做

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"))

结果

在此处输入图像描述

于 2018-05-05T07:27:36.817 回答
0

只需将以下功能集成到viewController您需要更改状态栏外观的地方。

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

用途:self.setStatusBarBackgroundColor(颜色:yourColor

您可以使用 common 将其应用于整个应用程序viewController,并将其viewController应用于其他 viewController 的子类,通过使用这种方法,您无需再次编写此代码。

于 2018-05-05T07:16:29.423 回答