我将导航栏颜色设置为#479F46
,在iOS 10中显示为#5DA15D
,但在iOS 11中显示为#4D9D4E
我在应用程序委托中使用的代码
func setupNavigationController() {
UINavigationBar.appearance().barTintColor = UIColor.colorWithHexString(hexStr: "479F46")
UINavigationBar.appearance().tintColor = UIColor.white
let textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white]
UINavigationBar.appearance().titleTextAttributes = textAttributes
}
编辑1
我将isTranslucent = false
用于导航控制器对象
nvc?.navigationBar.isTranslucent = false
但是这似乎还不够,我补充了UINavigationBar.appearance().isTranslucent = false
根据llb的建议
,现在两个View OS版本都将颜色显示为#4D9D4E
我需要它们都显示为#479F46
答案 0 :(得分:2)
这是因为半透明。将其设置为false。另外,如@matt所建议,请勿使用barTintColor
。改为设置backgroundColor
。
UINavigationBar.appearance().isTranslucent = false
UINavigationBar.appearance().backgroundColor = <Your color>
答案 1 :(得分:2)
如果要完全控制导航栏的颜色,请勿尝试使用barTintColor
。色调颜色是色调。您要指定实际颜色。
只有一种方法可以做到这一点。 否 barTintColor
,否半透明。然后为导航栏提供由所需颜色的矩形组成的背景图像。
示例:
let sz = CGSize(20,20)
let c = // some UIColor
let r = UIGraphicsImageRenderer(size:sz)
self.navbar.setBackgroundImage( r.image { ctx in
c.setFill()
ctx.fill(CGRect(origin:.zero, size:sz))
}, for:.any, barMetrics: .default)
答案 2 :(得分:0)
它与颜色配置文件有关,请确保使用正确的颜色配置文件
查看本文以获取更多详细信息:
https://lembergsolutions.com/blog/how-get-right-color-ios-detailed-instruction