我在代码中定义了一个颜色:
[UIColor colorWithHue:32.0/360.0 saturation:0.88 brightness:0.97 alpha:1]
如果我尝试在故事板中设置相同的颜色,运行应用程序时它与代码中定义的颜色略有不同。 如果我将颜色拖到调色板上,然后选择不同的颜色再次选择调色板上的颜色,HSB值会稍微有所不同。 界面构建器似乎会捕捉到不同的(RGB?)颜色。
我在代码中定义了一个颜色:
[UIColor colorWithHue:32.0/360.0 saturation:0.88 brightness:0.97 alpha:1]
如果我尝试在故事板中设置相同的颜色,运行应用程序时它与代码中定义的颜色略有不同。 如果我将颜色拖到调色板上,然后选择不同的颜色再次选择调色板上的颜色,HSB值会稍微有所不同。 界面构建器似乎会捕捉到不同的(RGB?)颜色。
Xcode 8+,iOS 10+
我最近遇到了这个问题,但是所有发布的答案都没有解决它。事实证明,随着iOS 10 SDK的发布,UIColor
初始化器init(red:green:blue:alpha:)
现在使用了扩展的sRGB范围,因此在配置故事板上的颜色值时,你必须相应地设置。
请参阅苹果的文档:https://developer.apple.com/reference/uikit/uicolor/1621925-init
UIColor.init(red: (20.0/255.0), green: (20.0/255.0), blue: (20.0/255.0), alpha: 1.0)
实际上,这个问题与 iOS 10 没有关系。iOS 10 后,UIColor init 使用的是“扩展 sRGB”而不是 sRGB。只有当我们使用低于 0.0 和高于 1.0 的 r g b 值时,才会出现问题。
看起来这是一个bug。当在代码中记录IB设置的颜色时,它具有H:27.982594 S:0.899257 B:0.953253的值。
我已向苹果提交了一个bug报告:rdar://19744216
感谢Zaph
记录:
CGFloat cols[4];
[color getHue:&cols[0] saturation:&cols[1] brightness:&cols[2] alpha:&cols[3]];
NSLog(@"H:%f S:%f B:%f %f",cols[0]*360, cols[1], cols[2], cols[3]);
navigationBar.isTranslucent = false
navigationBar.backgroundColor = UIColor.black
navigationBar.barTintColor = UIColor.black
colorWithHue
而不是 RGB 网页十六进制值:非常好的选择。 - zaph