iOS 10和iOS 11之间的导航栏背景颜色不同

时间:2018-10-17 20:40:40

标签: ios swift xcode uinavigationbar

我将导航栏颜色设置为#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

enter image description here

3 个答案:

答案 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)

它与颜色配置文件有关,请确保使用正确的颜色配置文件

xcode color profiles

查看本文以获取更多详细信息:

https://lembergsolutions.com/blog/how-get-right-color-ios-detailed-instruction