我有一个单一的视图应用。我在单个视图中定义了两个UIView
个实例。我希望两者都有相同的颜色。
对于第一个视图,我在Interface Builder中定义它并选择一种颜色。我想要#999999
(灰色)。新的颜色选择器可以输入十六进制颜色值,因此很容易输入:999999
。
对于第二个视图,我通过设置第二个视图的背景颜色来定义它。我使用#999999
设置了相同的[UIColor colorWithRed:0.6 green:0.6 blue:0.6 alpha:1]
颜色。
简单计算:#99 -> 153 -> 153/255 == 0.6.
目前为止很好。
然而产生的颜色是不同的。为什么?这感觉像是xcode中的一个bug。调试结果颜色后:
IB中定义的颜色:UIDeviceRGBColorSpace 0.529648 0.529632 0.529641 1
代码中定义的颜色:UIDeviceRGBColorSpace 0.6 0.6 0.6 1
更新:
我知道这个问题的“重复”。他们有一个共同点。他们正确地确定了问题,但却无法解决问题。它测试了Panic和Skala的开发商颜色选择器。他们有同样的问题。因为侮辱伤害,他们提供复制颜色作为十六进制值。客人什么,数字根本不受颜色配置文件的影响。因此,例如颜色#999
,它们为每个颜色分量提供精确0.6
。不幸的是,如果直接使用颜色,它会附加颜色配置文件,并且颜色会有所不同。获得精确RBG颜色的唯一方法是使用“安全网页颜色”,其中产生的颜色具有通用RGB颜色配置文件,换言之,不受影响。问题是安全的网页颜色不包含我们设计师使用的所有颜色。
答案 0 :(得分:0)
这是UIColor上的一个类别,如果有帮助,可以从十六进制字符串创建joinphrase
。
UIColor
至于为什么你的颜色不同。我会设置一个断点,看看颜色在运行时实际上是相同的。您甚至可以打印出每种颜色的rgb通道,以确保它们没有区别。
如果是Xcode错误,我会感到惊讶,但请告诉我从调试器中检查颜色时会发生什么。
因此,您可以使用不同的颜色空间进行RGB调查。默认情况下,界面构建器使用iOS使用的另一个。要切换它们,请在使用颜色选择器时单击小齿轮并将其设置为Generic RGB。
答案 1 :(得分:0)
你可以这样做
另一个视图的代码:
self.testView.backgroundColor = [UIColor colorWithRed:153.0/255.0 green:153.0/255.0 blue:153.0/255.0 alpha:1.0];
更新:
在Xcode中,单击颜色选择器中的颜色空间弹出窗口并选择“Generic RGB”,然后从Photoshop输入红色,绿色和蓝色值,而不是HEX VALUE
我们可以找到这么多的副本:
Wrong color in Interface Builder's color picker
Weird colors in XCode Interface Builder?
Wrong color in Interface Builder
Xcode 6 beta color picker issue
...
答案 2 :(得分:0)
整个问题由Apple在El Capitan修复。因此,如果您在El Capitan上使用xcode 7,这不再是一个问题。输入#hex颜色值不再改变颜色空间。