iOS中的十六进制颜色不准确[重复]

Posted

技术标签:

【中文标题】iOS中的十六进制颜色不准确[重复]【英文标题】:hex colors in iOS are not accurate [duplicate] 【发布时间】:2015-01-20 04:18:41 【问题描述】:

我发现当您在 xib 中设置视图的 backgroundColor 时,显示的颜色与您以编程方式设置 backgroundColor 时明显不同。

这是一个例子。

在这个简单的演示中我有两个视图。我在xib中设置了上层视图的backgroundColor,如下所示:

十六进制颜色值为 0x1BA9BA。然后我使用相同的十六进制颜色值以编程方式设置下部视图的背景颜色。我使用以下代码:

NSInteger hexValue = 0x1ba9ba;
self.testView.backgroundColor = [UIColor colorWithRed:((float)((hexValue & 0xFF0000) >> 16)) / 255.0 
                                                  green:((float)((hexValue & 0xFF00) >> 8)) / 255.0 
                                                  blue:((float)(hexValue & 0xFF))/255.0 
                                                  alpha:1.0];

结果如下:

如您所见,颜色存在明显差异。我在这里错过了什么?

【问题讨论】:

也许您可以将 RGB 滑块设置更改为 sRGB 或设备 RGB。 @gabbler 它是 sRGB。我也试过设备RGB,结果是一样的。 请使用通用的RGB色彩空间,先改变空间再修改rgb值,这样上视图就和下视图一样了。 @gabbler 我试过你说的,它有效!非常感谢:) @gabbler 是的,我独立地证明了这一点(没有看到你的评论)。随意输入作为答案 - 你第一个出现并发现。 【参考方案1】:

我将您的 RGB 滑块应用于第一个视图,并将您的代码应用于第二个视图,并且模拟器中的颜色(在我看来)完全相同;这是模拟器的屏幕截图:

但是,当颜色选择器的颜色空间设置为通用 RGB 时,我将这些数字输入颜色选择器(27、169、186)。如果我切换到 sRGB 并 然后 输入这些数字,我可以重现您的问题。所以这毕竟是一个色彩空间问题;只需从设置为 Generic RGB 的色彩空间开始,现在数字将匹配。

【讨论】:

您的计算机可能存在色彩管理问题?在我的机器上,更改颜色选择器中的颜色空间会更改滑块值,但不会更改颜色在模拟器中的外观。 在我的机器上更改颜色空间并没有改变模拟器中的颜色。但是颜色选择器肯定有问题,因为当我打开 xib 作为源代码时,它说 这不是正确的数字。

以上是关于iOS中的十六进制颜色不准确[重复]的主要内容,如果未能解决你的问题,请参考以下文章

iOS 随机颜色和十六进制颜色转换

将数组十六进制颜色转换为数组 rgb 颜色 [重复]

减轻javascript中的十六进制代码[重复]

iOS 7 中的 UITableView 分隔符颜色是啥?

从 ARGB 和/或十六进制调色板中获取颜色名称 [重复]

为啥十六进制颜色不适用于 SVG 的 utf8 数据 URL [重复]