我的应用程序只适用于iOS 8,我正在使用XCode 6.1.1。
如果我通过情节提要设置颜色(在Bar Tint部分设置Navigation Bar属性)
想要的颜色是:
56 186 145
我使用核心编码实用程序来获得我的颜色的浮动值。
按代码:
let backgroundColor = UIColor(red: 0.22, green: 0.729, blue: 0.569, alpha: 1.0)
self.navigationController!.navigationBar.barTintColor = backgroundColor
self.navigationController!.navigationBar.translucent = false通过故事板设置的颜色与原来的RGB相同。


编辑
我尝试使用基于@siejkowski评论的故事板:65 196 162中的65 196 162和rgb,但我得到了以下颜色:


为什么?
发布于 2014-12-24 06:42:25
你在这里观察到的颜色差异有两个原因。
UIColor时,它将返回(泛型RGB)值。因此,当您从Storyboard更改颜色时,RBG类型的值是不同的。为了得到准确的RGB值,改变的类型,RGB滑块,在故事板。
点击设置图标,这是完全正确的RGB滑块选项。它将显示一个弹出菜单-选择泛型RGB选项。

现在您可以观察到一个值为RGB的图像。
56 186 145正在更改为
49 175 126因此,这些是编码的愿望值。
在代码中,您正在传递参数的舍入值,如下所示
UIColor(red: 0.22, green: 0.729, blue: 0.569, alpha: 1.0)因此,它将作出一个小的变化,每像素的颜色代码。我建议您将此值除以255,并为编译器留出整数计算。这将给你渴望颜色的准确性。
因此,对于新值,更新代码将是:
let backgroundColor = UIColor(red: 49.0/255.0, green: 175.0/255.0, blue: 126.0/255.0, alpha: 1.0)
self.navigationController!.navigationBar.barTintColor = backgroundColor
self.navigationController!.navigationBar.isTranslucent = false发布于 2014-12-23 22:25:13
您可以看到颜色上的差异,因为它们使用相同的RGB值设置,但在不同的颜色空间中设置。
当从代码设置时,UIColor将从sRGB空间解释值,如下所示:https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CGColorSpace/index.html
但是,在默认情况下,看起来Storyboard颜色选择器使用的是本机值RGB。你需要在两者之间进行转换。您可以在Storyboard颜色选择器中通过单击RGB Sliders列表选择器旁边的“设置”图标在“颜色”选项卡中完成此操作。当然,本机RGB值是在彩色LCD设置下设置的,而sRGB值则是在sRGB下设置的。

当您这样做时,似乎是本机RGB空间中的56 186 145是sRGB空间中的73 186 141。因此,您的代码需要:
let backgroundColor = UIColor(red: 0.286, green:0.729, blue:0.553, alpha:1.0)发布于 2015-06-30 07:35:00
当我尝试从情节提要/界面构建器(在GenericRGB 6.3.2上)将颜色空间更改为XCode时,XCode不会保存更改。因此,如果我从Interface重新打开颜色,颜色空间总是sRGBIEC61966 61966-2.1。
因此,我想出了另一种可能对其他人有用的解决方案:在Mac默认应用程序"ColorSync实用程序“中,我使用了计算器,并将颜色的值从GenericRGB转换为sRGBIEC61966 61966-2.1。然后,我将转换后的值设置为Interface,并获得了与以编程方式获得的结果相同的结果!

https://stackoverflow.com/questions/27628473
复制相似问题