【发布时间】:2015-04-28 15:02:10
【问题描述】:
我有一个单视图应用程序。我在该单个视图中定义了两个 UIView 实例。我希望两者都具有相同的颜色。
对于第一个视图,我在 Interface Builder 中定义它并选择一种颜色。我想要#999999(灰色)。新的颜色选择器可以输入十六进制颜色值,因此很容易输入:999999。
对于第二个视图,我通过设置第二个视图的背景颜色来定义它。我使用[UIColor colorWithRed:0.6 green:0.6 blue:0.6 alpha:1] 设置了相同的#999999 颜色。
简单计算:#99 -> 153 -> 153/255 == 0.6. 到目前为止很好。
但是生成的颜色不同。为什么?这感觉就像 xcode 中的一个错误。调试结果颜色后:
在 IB 中定义的颜色:UIDeviceRGBColorSpace 0.529648 0.529632 0.529641 1
代码中定义的颜色:UIDeviceRGBColorSpace 0.6 0.6 0.6 1
更新:
我知道这个问题的“重复”。他们有一个共同点。他们正确地发现了问题,但不幸地未能解决它。它测试了来自 Panic 和 Skala 的开发人员颜色选择器。他们有同样的问题。并且作为对伤害的侮辱,他们提供复制颜色作为十六进制值。客人什么,那里的数字根本不受颜色配置文件的影响。因此,例如颜色#999,它们为每个颜色组件提供准确的0.6。不幸的是,如果直接使用颜色,它会附加颜色配置文件,结果颜色会有所不同。获得准确 RBG 颜色的唯一方法是使用“安全网页颜色”,其中生成的颜色具有通用 RGB 颜色配置文件,换句话说,不受影响。问题是安全的网页颜色并不包含我们设计师使用的所有颜色。
【问题讨论】:
-
你的计算有误! #99 -> 160!
-
@AndreSlotta No. #99 是 153 (9 * 16 + 9 = 153)。
-
@rmaddy 抱歉。我的错!我不小心加了 16 个!
-
格式化代码,固定语法。
标签: ios objective-c xcode uicolor