首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从故事板设置的UINavigationBar背景色与代码设置的颜色不同

从故事板设置的UINavigationBar背景色与代码设置的颜色不同
EN

Stack Overflow用户
提问于 2014-12-23 21:45:30
回答 3查看 4.1K关注 0票数 6

我的应用程序只适用于iOS 8,我正在使用XCode 6.1.1

如果我通过情节提要设置颜色(在Bar Tint部分设置Navigation Bar属性)

想要的颜色是:

56 186 145

我使用核心编码实用程序来获得我的颜色的浮动值。

按代码:

代码语言:javascript
复制
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,但我得到了以下颜色:

  • 按代码:

  • 按故事板:

为什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-24 06:42:25

你在这里观察到的颜色差异有两个原因。

  1. Storyboard中的值设置为RGB (sRGB set 6196-2.1)类型,当您按RGB值编码UIColor时,它将返回(泛型RGB)值。

因此,当您从Storyboard更改颜色时,RBG类型的值是不同的。为了得到准确的RGB值,改变的类型,RGB滑块,在故事板。

点击设置图标,这是完全正确的RGB滑块选项。它将显示一个弹出菜单-选择泛型RGB选项。

现在您可以观察到一个值为RGB的图像。

代码语言:javascript
复制
56 186 145

正在更改为

代码语言:javascript
复制
49 175 126

因此,这些是编码的愿望值。

  1. 综合报道问题:

在代码中,您正在传递参数的舍入值,如下所示

代码语言:javascript
复制
UIColor(red: 0.22, green: 0.729, blue: 0.569, alpha: 1.0)

因此,它将作出一个小的变化,每像素的颜色代码。我建议您将此值除以255,并为编译器留出整数计算。这将给你渴望颜色的准确性。

因此,对于新值,更新代码将是:

代码语言:javascript
复制
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
票数 12
EN

Stack Overflow用户

发布于 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。因此,您的代码需要:

代码语言:javascript
复制
let backgroundColor = UIColor(red: 0.286, green:0.729, blue:0.553, alpha:1.0)
票数 2
EN

Stack Overflow用户

发布于 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,并获得了与以编程方式获得的结果相同的结果!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27628473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档