44

概述

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

编辑(已添加以下部分)

以下都是不同的:

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

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

问题

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

9 回答 9

20

感谢@jtbandes 建议发送导致解决方案的屏幕截图

我只是为了完整性而回答这个问题。

我遵循的步骤:

  1. 在情节提要中截取图像
  2. 在设备中截取图像(使用邮件/照片流返回您的 Mac)
  3. 使用颜色选择器(Mac OS 调色板的一部分)在两个屏幕截图上选择相同的位置
  4. 记下在步骤 3 中选择的点的 RGB 值(可在 mac OS 调色板上获得)
  5. 比较两个 RGB 值并查看差异
  6. 添加 RGB 偏移以匹配颜色。

我的RGB偏移(不要盲目跟风)

根据我的经验,我添加了以下 RGB 值来获得我想要的颜色,它只是粗糙并且对我有用:

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

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

以不同的角度握住手机也会产生不同的色调,保持水平确实会产生颜色

于 2012-04-06T06:37:16.613 回答
11

正如其他人所指出的,这是Color Spaces的问题。

需要执行两个任务:

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

任务1

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

另一种选择是使用类似的应用程序SipIt(在 App Store 上免费提供,我上次检查过)。通过执行以下操作确保您在正确的色彩空间中进行采样:

Preferences -> General -> Color Profiles -> sRGB

您还可以设置输出格式(例如十六进制字符串)。

在此处输入图像描述 任务 2

在 Interface Builder 中,打开 Color 窗口,选择第二个窗格,选择“RGB Sliders”。然后单击齿轮图标以选择 sRGB 颜色配置文件。

在此处输入图像描述

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

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

我与 SipIt 没有任何关系。但是我已经用了几年了,非常好用。我会推荐给任何设计师。

于 2017-07-28T00:13:43.653 回答
7

当前(截至 2014 年 3 月 17 日)CGColorSpace 参考包括以下文本,其中指出 sRGB 是 iOS 的本机设备颜色空间。

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

于 2014-03-17T23:31:37.400 回答
5

这是关于色彩空间的。

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

如果您在一个颜色空间中选择一种颜色,并在不同的颜色空间中生成它,尽管复制了相同的 RGBA 值,但它看起来会有所不同。

另外,请记住,当您通过代码生成颜色时,使用,默认情况下UIColor(red:green:blue:alpha:)它是在颜色空间上生成的。sRGB这就是为什么使用这个(而不是 、 或任何其他)如此方便的Adobe RGB原因P3。此外,sRGB是目前业界使用最多的标准。

有趣的事实:UIColor我上面提到的那个构造函数sRGB从 Xcode8 开始在空间中创建颜色。以前,该函数用于在Generic RGB空间内创建它们。这就是为什么它也可能引起混乱。

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

于 2017-12-06T13:36:33.510 回答
1

iPhone 确实使用色彩空间管理,因此如果您想要更“科学”的解决方案,您可以创建自己的色彩空间,例如使用CGColorSpaceCreateCalibratedRGB. 虽然它在核心图形级别。

于 2012-04-06T13:45:15.347 回答
1

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

数字色度计

然后在代码中使用 sRGB 值而不是 RGB 本机价值观

在此处输入图像描述

使用此工具,您可以找到通用 RGB 颜色并将其直接设置为 xcode 作为 RGB 值

于 2017-02-18T09:01:11.383 回答
1

在您的应用程序中处理图像文件时,一种更简单的解决方案。首先,将 Xcode 中的颜色空间设置为 sRGB IEC61966-2.1 并应用颜色。然后,在您将任何图片导入您的应用程序之前,使用 Mac 上的 ColorSync Utility 将您的图片与 sRGB IEC61966-2.1 配置文件进行匹配。非常适合我,我的背景现在与我导入的图像完美匹配。希望这可以帮助某人。

于 2017-12-19T17:49:19.170 回答
0

我也有类似的问题,尤其是我项目中的果岭。我的问题原来是我的一些资产是在 illustrator 中创建的,并且颜色设置为 CMYK 而不是 RGB。我不确定这是否是您的问题,但它可能对那些将来偶然发现这个问题的人有所帮助。我将插画家“文档颜色模式”更改为 RGB,一切都很好。

于 2014-12-05T01:39:04.127 回答
0

您可以将此网页用于 Xcode 中的不同颜色组。例如,通用颜色和设备颜色略有不同。

于 2017-09-10T19:34:41.963 回答