我正在尝试设置背景图像,UINavigationBar
但状态栏始终为白色
结果
我的代码
self.navigationController?.navigationBar.setBackgroundImage(UIImage(named:"bg_nav")?.resizableImage(withCapInsets: UIEdgeInsets.zero, resizingMode: .stretch), for: .default)
预期结果图像背景填充包括状态栏
我正在尝试设置背景图像,UINavigationBar
但状态栏始终为白色
结果
我的代码
self.navigationController?.navigationBar.setBackgroundImage(UIImage(named:"bg_nav")?.resizableImage(withCapInsets: UIEdgeInsets.zero, resizingMode: .stretch), for: .default)
预期结果图像背景填充包括状态栏
你可以这样做
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"))
结果
只需将以下功能集成到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 的子类,通过使用这种方法,您无需再次编写此代码。