我在代码中定义了一种颜色
[UIColor colorWithHue:32.0/360.0 saturation:0.88 brightness:0.97 alpha:1]
如果我尝试在故事板中设置相同的颜色,则在运行App时,它与代码中定义的颜色略有不同。如果我将颜色拖到上颚,然后选择不同的颜色并再次选择上颚,HSB值略有不同。它似乎是在界面构建器中捕捉到不同的(RGB?)颜色。
答案 0 :(得分:183)
Xcode 8 +,iOS 10 +
我最近遇到了这个问题,所有发布的答案都没有。事实证明,随着iOS 10 SDK的发布,UIColor
初始化程序init(red:green:blue:alpha:)
现在使用扩展的sRGB范围,因此您必须在故事板上配置颜色值时进行相应设置。
请参阅Apple的文档:https://developer.apple.com/reference/uikit/uicolor/1621925-init
答案 1 :(得分:36)
我有同样的问题。我看到故事板中颜色的运行时RGB值与代码中运行时创建的UIColors不匹配。通过将颜色设置为" Generic RGB"我能够在故事板中解决这个问题。 (配置默认值为sRGB)。以下是我在IB中谈论的内容的截图:
答案 2 :(得分:8)
答案 3 :(得分:2)
使用代码,UIColor init(红色:绿色:蓝色:alpha :)方法返回带有sRGB色彩空间的颜色对象; 使用xib / StoryBoard,我们需要选择" sRGB IEC ..."如果我们希望获得与使用代码相同的外观。
如:
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值时,这才会引起问题。
答案 4 :(得分:1)
似乎这是一个错误。在代码中记录IB设置的颜色时,它的值为H:27.982594 S:0.899257 B:0.953253
我已向Apple提交了错误报告: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]);
答案 5 :(得分:0)
以下三行代码可实现所需的导航栏背景色:
navigationBar.isTranslucent = false
navigationBar.backgroundColor = UIColor.black
navigationBar.barTintColor = UIColor.black