【发布时间】:2017-05-05 14:33:38
【问题描述】:
我正在尝试将包含通用 RGB 颜色空间中颜色的字符串转换为 Swift 中的 UIColor。例如,典型的字符串如下所示:
0.121569 0.129412 0.156863 1
使用 macOS 中的颜色选择器,我发现这些值使用的是 Generic RGB 颜色空间。
但是,当我尝试将这些值转换为 UIColor 时,它使用的是 sRGB 颜色空间。
let red = CGFloat((components[0] as NSString).doubleValue)
let green = CGFloat((components[1] as NSString).doubleValue)
let blue = CGFloat((components[2] as NSString).doubleValue)
let alpha = CGFloat((components[3] as NSString).doubleValue)
print(UIColor(red: red, green: green, blue: blue, alpha: alpha))
// Log Result: NSCustomColorSpace sRGB IEC61966-2.1 colorspace 0.121569 0.129412 0.156863 1
因此,我的应用程序中显示了不同的颜色。我通过将颜色选择器中的颜色空间更改为 IEC61966-2.1 来确认这一点,它确实显示了不同的值:
知道如何将通用 RGB 值转换为正确的 UIColor 值吗?
编辑为了澄清,我无法将字符串中的颜色值更改为另一个方案,因为我正在从 XML 文件中的外部源读取颜色
【问题讨论】:
-
您的意思是正确的 UIColor 值? NSColor 仅适用于 OS X
标签: ios swift uicolor color-space