How to match UIExtendedSRGBColorSpace to my color values

前端 未结 1 1301
你的背包
你的背包 2020-12-20 17:38

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

Then I set variable green:

let green         


        
相关标签:
1条回答
  • 2020-12-20 18:24

    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
    
    0 讨论(0)
提交回复
热议问题