ios - UIColor 的默认颜色空间是什么?

标签 ios rgb uicolor srgb

我找不到描述从 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 值。请参阅屏幕截图。

How to pick the right RGB values for the Display P3 color space. enter image description here

最佳答案

长话短说

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/

相关文章:

ios - CIFilter filterWithCVPixelBuffer 在 iOS 中返回 nil

iOS分享扩展,配置项(tableView)

ios - 如果 UITextField 为空,则不会出现 UIAlert

c++ - HSL 到 RGB 颜色转换问题

java - 将RGB的int[][]保存为图像文件

iphone - 使用 UIColor RGB black 作为 NSMutableDictionary 中的键时出现问题

ios - 如何清除充满表情符号字符的字体缓存?

android - 在 Android 中获取位图的 RGB 值

ios - 在swift4中查找按钮的文本颜色

ios - 将背景色设置为RGB UIColor ButtonTypeRoundedRect