故事板中的颜色与 UIColor 不匹配

Color in storyboard not matching UIColor

我在代码中定义了一种颜色

[UIColor colorWithHue:32.0/360.0 saturation:0.88 brightness:0.97 alpha:1]

如果我尝试在情节提要中设置相同的颜色,当 运行 应用程序的颜色与代码中定义的颜色略有不同时。如果我将颜色拖到味觉上,然后 select 一种不同的颜色,然后 select 再次拖到味觉上,HSB 值会略有不同。它似乎在界面生成器中捕捉到不同的(RGB?)颜色。

这似乎是一个错误。在代码中记录 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]);

我遇到了同样的问题。我看到故事板中颜色的运行时 RGB 值与运行时在代码中创建的 UIColors 不匹配。通过在配置时将颜色设置为 "Generic RGB"(相对于默认的 sRGB),我能够在故事板中修复此问题。这是我在 IB 中谈论的内容的屏幕截图:

Xcode 8+, iOS 10+

我最近遇到了这个问题,none 发布的答案做到了。事实证明,随着 iOS 10 SDK 的发布,UIColor 初始化程序 init(red:green:blue:alpha:) 现在使用扩展的 sRGB 范围,因此在 Storyboard 上配置颜色值时必须进行相应设置。

查看 Apple 文档:https://developer.apple.com/reference/uikit/uicolor/1621925-init

Swift 3

在我的例子中,准确的是 彩色 LCD:

希望对您有所帮助 :-D

使用代码,UIColor init(red:green:blue:alpha:) 方法 return 具有 sRGB 颜色的颜色对象 space; 使用 xib / StoryBoard,如果我们想获得与使用代码相同的外观,我们需要 select "sRGB IEC..."。

如:

UIColor.init(red: (20.0/255.0), green: (20.0/255.0), blue: (20.0/255.0), alpha: 1.0)

xib / StoryBoard screenshot

其实这个问题和iOS10没有关系。 在 iOS 10 之后,UIColor init 使用 "extended sRGB" 而不是 sRGB。只有当我们使用低于 0.0 和高于 1.0 的 r g b 值时,这才会导致问题。

以下是实现所需导航栏背景颜色的 3 行:

navigationBar.isTranslucent = false
navigationBar.backgroundColor = UIColor.black
navigationBar.barTintColor = UIColor.black