热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

初始化UIColordisplayP3颜色的最佳做法

如何解决《初始化UIColordisplayP3颜色的最佳做法》经验,为你挑选了1个好方法。

创建UIColor时,默认情况下最好使用init(displayP3Red:green:blue:alpha :)进行可用性检查吗?老实说,我看不到两者之间的区别,因此不确定是否有什么问题,但我希望有人能对此有所了解。

if #available(iOS 10.0, *) {
    self.init(displayP3Red: r, green: g, blue: b, alpha: a)
} else {
    self.init(red: r, green: g, blue: b, alpha: a)
}

rickster.. 6

不,这些电话并不相同。将相同的RGBA值传递给每个将导致不同的颜色。

这是一篇方便的文章,讨论了色彩空间的差异。它很好地比喻了色彩空间就像尺子上的长度单位。如果我说某个对象的长度为1.0,除非您知道“ 1.0”的长度,否则这没有任何意义。英寸?米?福隆?差距?单位的定义与测量中所指的数量有很大的不同。

同样,如果我说一种颜色的红色分量为1.0,则除非我也说红色 1.0的程度,否则这没有任何意义。(用于绿色和蓝色组件的同上。)在Web和应用程序设计的许多历史中,可以安全地假设所有度量值均相对于sRGB标准-1.0红色表示“与sRGB相同的红色”。

但是随着电话,计算机,电视等的出现,支持更大的色域,这种假设已不再安全。Display P3是较新的Apple设备使用的色彩空间(与较新的4K HDR电视所使用的色彩空间非常匹配)。P3支持比sRGB更大的颜色范围,这意味着“如sRGB可以得到的红色”还不够红色。

为了使sRGB和P3设备之间的互操作更容易一些,Apple的API包括“扩展的sRGB”色彩空间。在常规的sRGB中,就像在大多数颜色空间中一样,分量值限制在0.0-1.0范围内-也就是说,红色分量不能为1.1,如果尝试,则只能将其限制为1.0。 。对于0.0-1.0范围内的分量值,扩展sRGB定义为与sRGB相同,但允许使用该范围外的值来表示sRGB色域之外的颜色。(这是Apple文档说UIColor(red:green:blue:alpha:)使用扩展的sRGB色彩空间时的意思。)


UIColorCGColor位于其下方)在iOS中没有提供方便的实用程序进行色彩空间转换,但NSColor在macOS中却提供了方便的实用程序来说明区别:

第一个红色等效UIColor(displayP3Red: 1, green: 0, blue: 0, alpha: 1)于iOS。第二个等效UIColor(red: 1, green: 0, blue: 0, alpha: 1)于iOS。如果您正在P3显示屏*上查看此答案,则可能会注意到颜色样本之间至少存在细微的差异。

在下面,注意转换后的值。“ sRGB max red”,又名UIColor(red: 1, green: 0, blue: 0, alpha: 1)(r: 0.918, g: 0.2, b: 0.139, a: 1)P3 大致相同。“ P3 max red”(又名UIColor(displayP3Red: 1, green: 0, blue: 0, alpha: 1)sRGB)在sRGB之外,但可以在“扩展的sRGB”中表示为(r: 1.093, g: -0.227, b: -0.15, a: 1)

*具有P3显示屏的Apple设备包括iPhone 7,iPad Pro 2016,iMac 2015年秋季,MacBook Pro 2016年秋季以及更高版本



1> rickster..:

不,这些电话并不相同。将相同的RGBA值传递给每个将导致不同的颜色。

这是一篇方便的文章,讨论了色彩空间的差异。它很好地比喻了色彩空间就像尺子上的长度单位。如果我说某个对象的长度为1.0,除非您知道“ 1.0”的长度,否则这没有任何意义。英寸?米?福隆?差距?单位的定义与测量中所指的数量有很大的不同。

同样,如果我说一种颜色的红色分量为1.0,则除非我也说红色 1.0的程度,否则这没有任何意义。(用于绿色和蓝色组件的同上。)在Web和应用程序设计的许多历史中,可以安全地假设所有度量值均相对于sRGB标准-1.0红色表示“与sRGB相同的红色”。

但是随着电话,计算机,电视等的出现,支持更大的色域,这种假设已不再安全。Display P3是较新的Apple设备使用的色彩空间(与较新的4K HDR电视所使用的色彩空间非常匹配)。P3支持比sRGB更大的颜色范围,这意味着“如sRGB可以得到的红色”还不够红色。

为了使sRGB和P3设备之间的互操作更容易一些,Apple的API包括“扩展的sRGB”色彩空间。在常规的sRGB中,就像在大多数颜色空间中一样,分量值限制在0.0-1.0范围内-也就是说,红色分量不能为1.1,如果尝试,则只能将其限制为1.0。 。对于0.0-1.0范围内的分量值,扩展sRGB定义为与sRGB相同,但允许使用该范围外的值来表示sRGB色域之外的颜色。(这是Apple文档说UIColor(red:green:blue:alpha:)使用扩展的sRGB色彩空间时的意思。)


UIColorCGColor位于其下方)在iOS中没有提供方便的实用程序进行色彩空间转换,但NSColor在macOS中却提供了方便的实用程序来说明区别:

第一个红色等效UIColor(displayP3Red: 1, green: 0, blue: 0, alpha: 1)于iOS。第二个等效UIColor(red: 1, green: 0, blue: 0, alpha: 1)于iOS。如果您正在P3显示屏*上查看此答案,则可能会注意到颜色样本之间至少存在细微的差异。

在下面,注意转换后的值。“ sRGB max red”,又名UIColor(red: 1, green: 0, blue: 0, alpha: 1)(r: 0.918, g: 0.2, b: 0.139, a: 1)P3 大致相同。“ P3 max red”(又名UIColor(displayP3Red: 1, green: 0, blue: 0, alpha: 1)sRGB)在sRGB之外,但可以在“扩展的sRGB”中表示为(r: 1.093, g: -0.227, b: -0.15, a: 1)

*具有P3显示屏的Apple设备包括iPhone 7,iPad Pro 2016,iMac 2015年秋季,MacBook Pro 2016年秋季以及更高版本


推荐阅读
author-avatar
爱上为突然_381
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有