Vla*_*vík 17 rgb uicolor srgb ios
在初始化UIColor类中的实例时,我找不到描述RGB值应使用哪个颜色空间的文章或文档.
在ios应用程序中获得正确颜色的文章说我们应该使用Generic RGB.另一方面,我发现有几篇帖子说我们绝对应该在iOS上使用sRGB.
似乎默认的颜色空间是sRGB,如CGColorSpace Reference中所述
有一个新的色彩空间在iPad Pro和iPhone 7.在现有的图像资源的配置文件必须被转换成显示P3使用所谓的"显示P3".对于Digital Color Meter应用程序,必须选择P3配置文件才能获得"显示P3"RGB值.查看截图.
iOS使用Extended sRGB作为默认值.
这可以通过Xcode中的调试器轻松验证:
po UIColor.red,UIExtendedSRGBColorSpace 1 0 0 1iOS 11,Xcode 9.2返回.此颜色空间可以使用相同的sRGB值而不会更改颜色,但同时允许RGB值为负值以及大于1.0以表示sRGB颜色空间外的颜色(即扩展的sRGB颜色空间).
从2016年开始,有一个很好的WWDC视频,使用宽色,可以很好地解释这种现象(转到8:35).
因此,如果您在应用程序中使用sRGB颜色,那么即使对于e-sRGB显示器也应该很好.当然,如果您需要sRGB色域之外的特定颜色之一,则需要使用e-sRGB色彩空间.
我写了一篇博文,详细解释了这一点:
基本上,虽然Sketch使用自定义颜色选择器,它采用sRGB颜色组件,但Xcode的颜色选择不会.
的UIColor最常用的工厂方法+ colorWithRed:绿:蓝:阿尔法:假定sRGB色彩空间(扩展的sRGB如果与iOS 10.x的链接),但它也有另一家工厂方法,colorWithDisplayP3Red:绿:蓝:阿尔法:将采取在您的显示P3颜色空间RGBA组件中,但在内部将它们存储为已翻译的值,并引用sRGB颜色空间.
与往常一样,请查看Apple有关UIColor的文档以获取更多信息:
https://developer.apple.com/documentation/uikit/uicolor?changes=latest_minor
有趣的是,了AppKit的对应的UIColor,NSColor,支持更多可用的工厂方法(包括一个设计有一个自定义的色彩空间专门模仿的UIColor的+ colorWithRed:绿:蓝:阿尔法:行为)的方式更多的灵活性.我不确定为什么UIColor会受到更多限制.
| 归档时间: |
|
| 查看次数: |
4071 次 |
| 最近记录: |