【问题标题】:iOS - color on Xcode simulator is different from the color on deviceiOS - Xcode 模拟器上的颜色与设备上的颜色不同
【发布时间】:2012-04-19 20:16:17
【问题描述】:

概述

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

编辑(已添加以下部分)

以下都是不同的:

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

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

问题

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

【问题讨论】:

  • 截图在这里肯定会有所帮助。我们在谈论什么不同?
  • 该设备使用大猩猩玻璃……而您的显示器很可能没有。由于光波失真,这将微妙地影响人眼感知颜色的方式。始终使用它在设备上的外观。设备之间看起来不太可能不同,除非其中一个运行不正常。
  • 感谢 borrden,是的,我喜欢使用设备颜色,但我不知道如何匹配这些颜色
  • 查看我的问题(和答案):stackoverflow.com/q/47721708/235297 当我将“Apple RGB”配置文件分配给 Photoshop 中的屏幕截图时,我得到了正确的颜色。

标签: iphone ios colors ios-simulator color-scheme


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    这是关于色彩空间

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

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

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

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

    这是一个关于该主题的资源:@​​987654321@

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        需要执行两个任务:

        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 没有任何关系。但是我已经用了几年了,非常好用。我会把它推荐给任何设计师。

        【讨论】:

        • 同样使用 Sip,匹配 Sip 和 Xcode 之间的颜色空间有助于在 Xcode 颜色选择器中为十六进制字段获得相同的颜色。为此+1 :)。但是 Xcode 和 Sketch 中的颜色仍然不匹配:(
        • 有什么方法可以让 Storyboard 记住我的偏好:sRGB?我不想每次设置自定义颜色时都选择此选项!
        【解决方案5】:

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

        然后在您的代码中使用 sRGB 值而不是 RGB

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

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

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

            【讨论】:

            【解决方案8】:

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

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

            我遵循的步骤:

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

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

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

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

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

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

            【讨论】:

            • 你做的其实叫色彩管理:en.wikipedia.org/wiki/Color_management
            • 感谢@MrTJ,我的理解是 iPhone 不使用颜色配置文件,因此我按照上述步骤操作,如果有更好的方法,我会很高兴知道。谢谢
            • 很棒的帖子。我同时对您的补偿表示感谢,并对它们根本需要它们感到失望。肉眼看来,虽然优惠是完美的。最后,我的 default.png 优雅地过渡到应用程序的菜单背景。
            • 根据这个问题(我觉得这不保证欺骗标志,因为它非法更好的答案,IMO),问题很可能是您在颜色选择器上使用了 sRGB 颜色空间,并且UIColor() 在通用 RGB 颜色空间中产生一种颜色。 (我知道文档表明 UIColor() 使用设备 RGB,但在我的测试中,当将颜色选择器设置为通用 RGB,而不是设备 RGB 时,UIColors 完全匹配。)请参阅:stackoverflow.com/questions/28037691/…
            【解决方案9】:

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

            【讨论】:

            • 感谢@MrTJ 请原谅我的无知,我正在使用图像(纹理),这也适用于图像吗?
            • 是的,您可以为包括屏幕在内的任何渲染上下文设置色彩空间。然后,您的色彩空间将应用于您绘制到该渲染上下文的任何内容。见developer.apple.com/library/mac/#documentation/graphicsimaging/…(尤其是最后一章)和developer.apple.com/library/mac/#qa/qa1396/_index.html
            • 虽然 API 确实存在,但实际上似乎没有任何作用。使用CGColorSpaceCreateCalibratedRGB() 创建CGColor,然后将其绘制到DeviceRGB 上下文中会产生完全相同的颜色值。 (它可能是 OS X 的保留,或者为了面向未来而包括在内。)
            猜你喜欢
            • 2021-07-18
            • 1970-01-01
            • 1970-01-01
            • 2013-06-03
            • 1970-01-01
            • 1970-01-01
            • 2014-09-13
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多