iOS – Xcode模拟器上的颜色与设备上的颜色不同

概观

我的iPhone应用程序在模拟器(iMac)中的背景颜色看起来不同于设备上的颜色(iPhone 3GS)。

编辑(以下部分已添加)

以下是不同的:

  1. 故事板颜色(xib文件)
  2. 模拟器的颜色
  3. 设备颜色

我想我应该看看它在设备上的外观。

问题

  1. 这是其他开发者面临的常见问题,是否有匹配颜色(系统过程)的方法?
  2. 在不同版本的iPhone(3gs / 4 / 4s)或所有颜色上,颜色看起来会不同?
  3. 我错过了什么,有什么特定的颜色configuration文件,我应该使用?
  4. 有什么样的经验法则的RGB值的变化一定比例?
  5. 在iPhone 4和4S中,颜色匹配模拟器? (我没有iPhone4和4S,所以我不确定。)

感谢@jtbandesbuild议发送导致解决scheme的屏幕截图

我只是回答完整性的问题。

我遵循的步骤是:

  1. 在故事板上截图
  2. 以设备中的图像截图(使用邮件/照片stream回到您的mac)
  3. 使用颜色select器(Mac OS调色板的一部分)在这两个屏幕截图中select相同的点
  4. 记下在步骤3中select的点的RGB值(在Mac OS调色板上可用)
  5. 比较两个RGB值并查看差异
  6. 添加RGB偏移以匹配颜色。

我的RGB偏移量(不要盲目追随)

基于我的经验,我添加了下面的RGB值来获得我想要的颜色,这只是粗糙的,为我工作:

  • 红+12
  • 绿色+19
  • 蓝色+16

不同的angular度(最好保持水平)

拿着电话在不同的angular度也给不同的色调,保持水平确实给的颜色

当前(截至3/17/14)CGColorSpace参考文件包含以下文本,它表示sRGB是iOS的本机设备色彩空间。

颜色空间和iOS:iOS不支持ColorSync,因此应在本地设备颜色空间中提供所有资源:sRGB。

正如其他人所指出的,这是一个色彩空间的问题。

需要执行两项任务:

  1. 使用sRGB色彩空间获取源颜色。
  2. 在Interface Builder中使用sRGB颜色空间设置颜色。

任务1

您可以使用Apple的Digital Color Meter应用程序来使用Display in sRGB选项中的Display in sRGB来对所需的颜色进行采样,但输出非常有限。

另一个select是使用像SipIt这样的应用程序(在App Store上免费提供,最后一次检查)。 通过执行以下操作,确保您在正确的色彩空间中进行采样:

 Preferences -> General -> Color Profiles -> sRGB 

你也可以设置你的输出格式(例如hexstring)。

在这里输入图像说明 任务2

在界面生成器中,打开颜色窗口,select第二个窗格,select“RGB滑块”。 然后点击cog图标selectsRGB颜色configuration文件。

在这里输入图像说明

完成后,将您的颜色值粘贴到Hex Color #字段

你完成了! 现在你的颜色应该匹配。

我不以任何方式隶属于SipIt。 但是我已经使用了几年了,非常方便。 我会推荐给任何devise师。

iPhone确实使用颜色空间pipe理,所以如果你想要一个更“科学”的解决scheme,你可以创build自己的颜色空间,例如CGColorSpaceCreateCalibratedRGB 。 它在核心graphics层面虽然。

将RGB值转换为sRGB的更好方法是使用mac中的“Digital Color Meter”工具,只需选中“Display in sRGB”

数字彩色表

然后在代码中使用sRGB值而不是RGB 本地值

在这里输入图像说明

使用这个工具,你可以find通用的RGB颜色,并将其直接设置为xcode作为RGB值

在您的应用中使用图像文件时,另一个更简单的解决scheme。 首先,将Xcode中的颜色空间设置为sRGB IEC61966-2.1并应用您的颜色。 然后,在将任何图片导入到应用程序之前,使用Mac上的ColorSync Utility将图像与sRGB IEC61966-2.1configuration文件进行匹配。 为我完美工作,我的背景现在完全符合我导入的图像。 希望这有助于某人。

我有一个类似的问题,特别是在我的项目中的绿色。 我的问题原来是,我有一些资产是在Illustrator中创build的,颜色设置为CMYK而不是RGB。 我不确定这是不是你的问题,但是对于那些未来绊倒这个问题的人可能会有帮助。 我将插图画家“文档颜色模式”更改为RGB,一切正常。

你可以使用这个网页在Xcode中的不同甲板的颜色。 例如Generic和Device Colors有所不同。

这是关于色彩空间

确保从sRGB色彩空间中选取颜色,并通过从下拉菜单中selectsRGB IEC61966-2.1在Interface Builder上复制其RGBA值。

如果您在一个颜色空间中select一种颜色,并在不同的颜色空间中生成颜色,则它将看起来不同,尽pipe已经复制了相同的RGBA值。

另外,请记住,当通过代码生成颜色时,使用UIColor(red:green:blue:alpha:) ,默认情况下会在sRGB颜色空间中生成颜色。 这就是为什么使用这个方法非常方便(而不是Adobe RGBP3或其他)。 另外, sRGB是目前业界使用最多的标准。

有趣的事实:上面提到的UIColor构造函数在Xcode8之后在sRGB空间创build了颜色。 之前,该函数用于在Generic RGB空间内创build它们。 这就是为什么它也可能导致混乱。

这是一个扩展的主题的资源: https : //medium.com/@volbap/working-efficiently-with-colors-in-xcode-bc4c58b16f9a