我找不到描述从 UIColor 类初始化实例时应该为 RGB 值使用哪个颜色空间的文章或文档。
文章Getting the right colors in your ios app说我们应该使用通用 RGB。另一方面,我发现有几篇文章说我们绝对应该在 iOS 上使用 sRGB。
默认颜色空间似乎是 sRGB,如 CGColorSpace Reference 中所述
有a new color space在iPad Pro和iPhone 7中使用的名为“Display P3”。现有图像资源中的配置文件必须转换为Display P3。对于 Digital Color Meter 应用程序,必须选择 P3 配置文件才能获得“显示 P3”RGB 值。请参阅屏幕截图。
最佳答案
长话短说
iOS 默认使用扩展 sRGB。
详细说明
这可以通过 Xcode 中的调试器轻松验证:
- 在代码的任意位置放置断点,
- 当 lldb 出现时,输入
po UIColor.red
, - 从 iOS 11、Xcode 9.2 开始,上述命令将返回
UIExtendedSRGBColorSpace 1 0 0 1
。
此颜色空间可以使用相同的 sRGB 值而不会发生颜色变化,但同时允许 RGB 值变为负值以及大于 1.0 以表示 sRGB 颜色空间(即扩展的 sRGB 颜色空间)之外的颜色。
有一个 WWDC 视频,Working with Wide Color ,从 2016 年开始很好地解释了这种现象(转到 8:35)。
因此,如果您在应用中使用 sRGB 颜色,即使是 e-sRGB 显示器,您也应该可以使用。当然,如果您需要 sRGB 色域之外的特定颜色之一,则需要使用 e-sRGB 颜色空间。
关于ios - UIColor 的默认颜色空间是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30236619/