我的应用程序仅适用于iOS 8,我正在使用XCode 6.1.1.
如果我通过故事板设置颜色(在导航栏部分设置“棒色调”属性)
所需的颜色是:
56 186 145
我使用Core coding utilities来获取我的颜色的浮动值.
按代码:
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相同.
>按代码:
>按故事板:
编辑
我尝试使用let backgroundColor = UIColor(红色:0.255,绿色:0.769,蓝色:0.635,alpha:1.0)和来自故事板的rgb:65 196 162基于@siejkowski评论,但我得到以下颜色:
>按代码:
>按故事板:
为什么?
解决方法
您观察到的颜色差异有两个原因.
> Storyboard中设置的值是RGB(sRGB IEC61966-2.1)类型,当您按RGB值编码UIColor时,它将返回RGB(通用RGB)值.
因此,当您从Storyboard更改颜色时,RBG类型的值会有所不同.在Storyboard中获取RGB滑块的精确RGB值更改类型.
单击“设置”图标,该图标与RGB滑块选项完全相同.它将显示一个弹出菜单 – 选择Generic RGB选项.
现在,您可以观察RGB值的图像
56 186 145
现在改为
49 175 126
所以这些是编码的欲望值.
>综述问题:
在代码中,您传递给出参数的向上舍入值,如下面一行
UIColor(red: 0.22,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