How to match UIExtendedSRGBColorSpace to my color values

落花浮王杯 提交于 2019-11-28 08:04:17

问题


I set the color for UIButton with the XCode visual editor. I set it using RGB sliders.

Then I set variable green:

let green = UIColor(red: 0, green: 210/255, blue: 0, alpha: 1)

When I printed out green value and UIButton.backgroundColor I got next values accordingly:

UIExtendedSRGBColorSpace -0.146119 0.836984 -0.0130851 1
UIExtendedSRGBColorSpace 0 0.823529 0 1

So, as I guess, the color spaces are equal, but values are not. Why is it so? The Apple's UIButton() does some hidden conversion? What is the purpose? Is it possible to have the same values for this button property and for green property.


回答1:


Next to the "RGB Sliders" popup menu there is a button which allows you to choose a color space:

In your case it is set to "Display P3", a color space which is "larger" than the sRGB color space and allows to display more colors on newer devices with a P3 display. This color is represented in the "extended sRGB colorspace" where the components are not restricted to the range from 0.0 to 1.0 (see "Color and Color Spaces" in UIColor for more information). In your case

UIExtendedSRGBColorSpace -0.416964 0.838774 -0.249501 1

with negative red and blue components, i.e. a color outside color gamut of sRGB.

If you set the colorspace in the color chooser to "sRGB" then the result for 0/210/0 will be

UIExtendedSRGBColorSpace 0 0.823529 0 1

and identical to

let green = UIColor(red: 0, green: 210/255, blue: 0, alpha: 1)

Alternatively, use the Display P3 color space for the programmatically created color as well:

print(label.backgroundColor!)
// UIExtendedSRGBColorSpace -0.416964 0.838774 -0.249501 1

let green = UIColor(displayP3Red: 0, green: 210/255, blue: 0, alpha: 1)
print(green)
// UIDisplayP3ColorSpace 0 0.823529 0 1
print(UIColor(cgColor: green.cgColor))
// UIExtendedSRGBColorSpace -0.416964 0.838774 -0.249501 1

print(label.backgroundColor! == green)
// true


来源:https://stackoverflow.com/questions/47443647/how-to-match-uiextendedsrgbcolorspace-to-my-color-values

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!