故事板中的颜色与 UIColor 不匹配
Posted
技术标签:
【中文标题】故事板中的颜色与 UIColor 不匹配【英文标题】:Color in storyboard not matching UIColor 【发布时间】:2015-04-06 17:10:44 【问题描述】:我将代码中的颜色定义为
[UIColor colorWithHue:32.0/360.0 saturation:0.88 brightness:0.97 alpha:1]
如果我尝试在情节提要中设置相同的颜色,则在运行应用程序时,它的颜色与代码中定义的颜色略有不同。如果我将颜色拖到上颚,然后选择另一种颜色并再次选择上颚,HSB 值会略有不同。它似乎在界面生成器中捕捉到不同的(RGB?)颜色。
【问题讨论】:
使用colorWithHue
而不是 RGB 网络十六进制值:不错的选择。
在您的代码中尝试记录 IB 设置的 HSB 值。如果它们不同,则提交错误:bugreporter.apple.com。我想我也看到了这个问题。
在选择 UIView 的背景颜色并为 UITableView 设置相同的背景颜色但颜色不同时,我也遇到了同样的情况。为了实现这一点,我对颜色的 alpha 进行了更改
记录的故事板颜色:H:27.982594 S:0.899257 B:0.953253 我会报告
【参考方案1】:
Xcode 8+、iOS 10+
我最近遇到了这个问题,但发布的答案都没有。事实证明,随着 ios 10 SDK 的发布,UIColor
初始化器 init(red:green:blue:alpha:)
现在使用扩展的 sRGB 范围,因此您必须在 Storyboard 上配置颜色值时进行相应设置。
请参阅 Apple 的文档:https://developer.apple.com/reference/uikit/uicolor/1621925-init
【讨论】:
感谢您的提醒!是否可以在不运行某种手动脚本的情况下在每个 Interface Builder(.xib 和 .storyboard)文件中全局应用此更改? 我认为这很好地解释了你应该做什么:lembergsolutions.com/blog/… 谢谢!这有帮助!【参考方案2】:我遇到了同样的问题。我看到故事板中颜色的运行时 RGB 值与运行时在代码中创建的 UIColors 不匹配。在配置它时,我可以通过将颜色设置为“通用 RGB”(相对于 sRGB 的默认值)在情节提要中解决此问题。这是我在 IB 中所说的截图:
【讨论】:
我想我以前曾尝试过,但现在 Xcode 6.2 中的通用 RGB 似乎确实保持了正确的值,谢谢 嘿@尼克。我也在 Xcode 6.2 上,遇到了同样的问题,你描述了它没有保留你设置的值。你必须玩一点;有一些条件会导致它重置(它有点错误,但我能够解决它们)。 如果您使用的是 ios 10 xcode 8,请查看@Camilo M 答案【参考方案3】:斯威夫特 3
在我的情况下,准确的说法是 彩色 LCD:
希望能帮到你:-D
【讨论】:
哇,他们更改了很多配置文件,我可以确认这适用于 XCode 9。【参考方案4】:通过代码,UIColor init(red:green:blue:alpha:) 方法返回具有 sRGB 颜色空间的颜色对象; 使用 xib / StoryBoard,如果我们想要获得与使用代码相同的外观,我们需要选择“sRGB IEC...”。
如:
UIColor.init(red: (20.0/255.0), green: (20.0/255.0), blue: (20.0/255.0), alpha: 1.0)
xib / StoryBoard screenshot
其实这个问题和iOS 10没有关系。 在 iOS 10 之后,UIColor init 使用“扩展 sRGB”而不是 sRGB。只有当我们使用低于 0.0 和高于 1.0 的 r g b 值时,这才会导致问题。
iOS 10 UIColor related
【讨论】:
【参考方案5】:似乎这是一个错误。在代码中记录 IB 设置的颜色时,其值为 H:27.982594 S:0.899257 B:0.953253
我已向 Apple 提交错误报告:rdar://19744216
感谢扎夫
记录:
CGFloat cols[4];
[color getHue:&cols[0] saturation:&cols[1] brightness:&cols[2] alpha:&cols[3]];
NSLog(@"H:%f S:%f B:%f %f",cols[0]*360, cols[1], cols[2], cols[3]);
【讨论】:
【参考方案6】:以下是 3 行来实现所需的导航栏背景颜色:
navigationBar.isTranslucent = false
navigationBar.backgroundColor = UIColor.black
navigationBar.barTintColor = UIColor.black
【讨论】:
以上是关于故事板中的颜色与 UIColor 不匹配的主要内容,如果未能解决你的问题,请参考以下文章