嗨,我想将状态栏设置为与UINavigationBar
完全相同的颜色。我在下面的代码中使用完全相同的颜色,但从图像中可以看出,它们的颜色不同。是否有任何方法可以使它们相同。我试图谷歌但无法找到任何解决方案。
UIApplication.shared.statusBarView?.backgroundColor = UIColor(red: 13/225, green: 71/255, blue:161/255, alpha: 1.0)
UINavigationBar.appearance().barTintColor = UIColor(red: 13/225, green: 71/255, blue:161/255, alpha: 1.0)
尝试将半透明变为虚假
navigationBar.isTranslucent = false
您可以将以下函数添加到AppDelegate.swift
文件中
func changeStatusBarColor(_ color: UIColor) {
guard let statusBar = (UIApplication.shared.value(forKey: "statusBarWindow") as AnyObject).value(forKey: "statusBar") as? UIView else {
return
}
statusBar.backgroundColor = color
}
并使用didFinishLaunchingWithOptions
方法,如下所示
self.changeStatusBarColor(UIColor.black) //pass the color you want to set
编辑
您可以在AppDelegate.swift
文件中使用共享实例
static let shared = AppDelegate()
之后,每当您设置导航背景颜色时,只需将其传递给changeStatusBarColor
方法
使用以下方法设置与导航背景颜色相同
AppDelegate.shared.changeStatusBarColor((self.navigationController?.navigationBar.backgroundColor)!)
self.navigationController?.navigationBar.tintColor = UIColor.blue
self.navigationController?.navigationBar.barTintColor = UIColor.blue
我运行xcode 10.1,swift 4.2。希望这可以帮助。
self.navigationController.navigationBar.barTintColor = UIColor.yourColor
如果要使状态栏颜色与导航栏匹配,则不必设置状态栏颜色。注释掉以下行可以解决我的环境中的这个问题。
// UIApplication.shared.statusBarView?.backgroundColor = UIColor(red: 13/225, green: 71/255, blue:161/255, alpha: 1.0)
UINavigationBar.appearance().barTintColor = UIColor(red: 13/225, green: 71/255, blue:161/255, alpha: 1.0)
或者,您可以执行以下操作:
UIApplication.shared.statusBarView?.backgroundColor = UIColor(red: 13/225, green: 71/255, blue:161/255, alpha: 0.0)
UINavigationBar.appearance().barTintColor = UIColor(red: 13/225, green: 71/255, blue:161/255, alpha: 0.0)