【问题标题】:Wrong color in Interface BuilderInterface Builder 中的颜色错误
【发布时间】:2013-01-12 18:41:19
【问题描述】:

问题:我在Interface Builder中设置了颜色,设置了通道RGB,然后我对工作窗口进行了截图,在Photoshop中打开它并通过颜色选择器检查颜色,我有在界面生成器中设置。结果——RGB值和我设置的不一样。

视频: http://www.youtube.com/watch?v=ASLfnYHPbqM

大多数异常从第 45 秒开始,当时我尝试使用 Interface Builder 的颜色选择器。它显示RGB值与我在他相同并安装的RGB值不同),但颜色选择器IB的值与颜色选择器Photoshop的值一致。

【问题讨论】:

  • 这是因为颜色配置,而且很麻烦。
  • @jurgemaister 色彩配置并不麻烦。颜色配置是这样当您在系统上设置颜色时,该颜色在用户屏幕上看起来是相同的,这可能与您的屏幕具有非常不同的颜色特征。大多数人都在乎确切的 RGB 值是什么,他们更关心每个用户在他的屏幕上看到的颜色相同,而不管实现这一点需要哪些 RGB 值。如果每个用户都使用经过校准的屏幕,那么实际上每个用户都会在他的屏幕上看到几乎相同的颜色,尽管 RGB 值必须不同。
  • @Mecki 你是绝对正确的。可能是缺乏的颜色配置是一件令人头疼的事情。我的观点是 Xcode 处理颜色真的很糟糕,而且 OS X 和 iOS 以不同的方式处理颜色并没有真正帮助。如果向用户正确显示颜色很重要,那么您就无法真正绕过颜色配置文件。但如果你主要关心的是让那些他妈的背景颜色匹配,那就太痛苦了。
  • @jurgemaister 将有问题的颜色设置(和 Interface Builder 在这里也很重要)与您在 Photoshop 中创建的图像的颜色混合是一个问题,但这里的问题是 Photoshop,它坚持使用自己的颜色空格,而不是使用您的显示器之一。在同一台显示器上,在相同的色彩空间中,相同的 RGB 值看起来总是相同的,因此要使许多任务变得更容易,只需要一个 Photoshop,它可以在显示器的色彩空间内工作,就像所有应用程序一样没有自己的色彩空间管理。

标签: ios xcode colors picker


【解决方案1】:

这是有效的guide,只需按照以下步骤操作,您就可以通过编程方式设置 UIColor 并让它们与屏幕截图中的颜色匹配。

【讨论】:

  • 修复:在 sRGB IEC61966-2.1 配置文件中应用(在 Xcode 9 中)。
  • @KML,谢谢!正是我所需要的!只需设置 sRGB 和繁荣,现在一切都与设计相匹配!
【解决方案2】:

Apple 认为,颜色在任何地方看起来都相同比颜色在任何地方都具有相同的 RGB 值更重要。看,相同的 RGB 值在不同的屏幕上看起来并不相同,因为每个屏幕都有不同的显示特性。

因此,当您截取屏幕截图时,Apple 不仅为图像中的每个像素存储一个 RGB 值,它们还将您的显示器的显示特性存储在图像文件中。那有什么好处?如果其他人打开您的屏幕截图,系统可以查看创建它的人的监视器特征,将其与想要观看它的人的监视器的监视器特征进行比较,然后可以计算它必须如何采用图像中的 RGB 值,使图像在当前显示器上看起来相同。如果它只是显示 RGB 值而不做任何这些,图像颜色可能看起来不对(在某些情况下只是轻微的,在某些情况下更多,如果用户的显示器非常糟糕,在某些情况下甚至是完全错误的) .

因此系统会向图形适配器发送不同的 RGB 值,因为 RGB 颜色本身并不能真正描述颜色。 RGB 值和显示器配置文件确实描述了一种颜色,而不是 RGB 值很重要,颜色很重要。如果我制作红色的东西,我希望它在每台显示器上都是相同的红色。我不希望它在一台显示器上是较深的红色,在另一台显示器上是浅红色,而在第三台显示器上是几乎粉红色的红色。

Photoshop 的问题在于它有自己的内置颜色校正机制。 Photoshop 通常在 sRGB(标准 RGB 颜色空间)或 Adob​​e RGB(Adobe 发明的扩展颜色空间)中工作。当您加载不在所需颜色空间内的图像时,Photoshop 将转换图像的颜色空间,并且每次颜色空间转换都会导致 RGB 值发生变化。请注意,在 Photoshop 中显示的图像仍会根据您当前的显示器颜色特性进行颜色校正,只是您在 Photoshop 中操作的 RGB 值在另一个颜色空间中,当存储回文件时,Photoshop 会将值转换回或它将保留它们并将新的颜色配置文件嵌入到图像文件中。

单独使用 RGB 来描述颜色的时代已经结束多年。如今,RGB 本身已经毫无意义,只有与颜色配置文件结合使用时,它才能真正有意义地描述实际颜色。

如果您想要没有嵌入真实颜色配置文件的屏幕截图,请执行以下操作:

  1. 打开“系统偏好设置”
  2. 转到“显示器”
  3. 转到“颜色”
  4. 选择“通用 RGB 配置文件”
  5. 制作你的截图
  6. 改回您的个人资料

在您更改配置文件之前可能需要先退出 Xcode(并在您改回后重新启动它),因为我不确定更改配置文件是否会立即生效。它肯定会立即影响显示器上的显示方式,但是如果您想通过选择特定的 RGB 值在 Xcode 中选择一种颜色,我不确定配置文件更改是否也会在此处立即生效(您可以给它不重启试一试,如果不行,你必须重新启动重复它。

尽管如此,这仍可能导致 Photoshop 中的颜色不正确,因为 Photoshop 仍可能将颜色转换为 sRGB 或 Adob​​e RGB。因此,您可能不想选择“通用 RGB 配置文件”,而是选择“sRGB”配置文件(取决于您的 OS X 版本,也可能命名为“sRGB IEC61966-2.1”)。这样图像已经在 sRGB 颜色空间中。您只需要说服 Photoshop 保持这种方式(而不是将其转换为 Adob​​e RGB),然后您就会真正在 Xcode 和 Photoshop 中看到相同的 RGB 值。

注意更改颜色配置文件如何使您的显示看起来完全不同?你认为颜色变化很大吗?相信我,与不同的显示器有时会改变颜色相比,这算不了什么。也许您现在可以理解为什么色彩校正如此重要了。所以问题是,为什么 RGB 值首先对您如此重要?只要显示的颜色相同,RGB 值是否相同真的很重要吗?

【讨论】:

  • 谢谢,这是网络上唯一有效的解决方案。关键是在将显示更改为“通用 RGB 配置文件”之前退出 Xcode。然后,当您选择“保存为 Web 和设备”时,取消选中“转换为 sRGB”框。然后在 Xcode 中,单击颜色选择器中的颜色空间弹出窗口并选择“Generic RGB”,然后从 Photoshop 输入红色、绿色和蓝色值,而不是 HEX 值,因为这会由于某种原因恢复到 sRGB 颜色空间(是小心不要切换到十六进制字段,因为这也会将空间更改为 sRGB)。
  • 哇+1,现在我可以在界面生成器中设置颜色以匹配我在代码中设置的十六进制值。
  • 阅读此内容也很重要:developer.apple.com/library/ios/technotes/tn2313/_index.html#//… – Xcode 在 sRGB 空间中工作,因为它使用 iOS 的目标颜色管理。因此,如果我将显示器也切换到 sRGB 空间,我会得到最少的混乱和颜色差异。至少在那个空间 Xcode 和 Simulator 匹配。
猜你喜欢
  • 1970-01-01
  • 2011-11-21
  • 2014-08-01
  • 1970-01-01
  • 2018-11-23
  • 2011-02-22
  • 1970-01-01
  • 2012-06-02
相关资源
最近更新 更多