Color in storyboard not matching UIColor

对着背影说爱祢 提交于 2019-11-27 09:46:39

问题


I am defining a color in code as

[UIColor colorWithHue:32.0/360.0 saturation:0.88 brightness:0.97 alpha:1]

If I try to set the same color in storyboard, when running the App it is a slightly different colour to the one defined in code. If I drag the color to the palate then select a different color and select the palate one again, the HSB values are slightly different. It seems it is snapping to a different (RGB?) color in interface builder.


回答1:


Xcode 8+, iOS 10+

I recently faced this problem and none of the posted answers did it. It turns out that with the release of iOS 10 SDK, the UIColor initializer init(red:green:blue:alpha:) now uses the extended sRGB range, so you have to set accordingly when configuring your color values on the Storyboard.

See Apple's documentation: https://developer.apple.com/reference/uikit/uicolor/1621925-init




回答2:


I had the same issue. I was seeing runtime RGB values of the colors from storyboards not matching UIColors created at runtime in code. I was able to fix this in storyboards by setting the color to be "Generic RGB" (vs the default of sRGB) when configuring it. Here is a screenshot of what I'm talking about in IB:




回答3:


Swift 3

In my case what was exactly accurate was Color LCD:

I hope I've helped :-D




回答4:


With code, UIColor init(red:green:blue:alpha:) method return color object with sRGB color space; With xib / StoryBoard, we need to select "sRGB IEC..." if we want to get same appearance as using code.

Such as:

UIColor.init(red: (20.0/255.0), green: (20.0/255.0), blue: (20.0/255.0), alpha: 1.0)

xib / StoryBoard screenshot

Actually,this problem has nothing to do with iOS 10. After iOS 10, UIColor init uses "extended sRGB" instead of sRGB. And this will causes problems only when we use r g b values below 0.0 and above 1.0.

iOS 10 UIColor related




回答5:


Seems this is a bug. When logging the color set by IB in code, it has the values H:27.982594 S:0.899257 B:0.953253

I have filed a bug report to Apple: rdar://19744216

Thanks to Zaph

To log:

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]);


来源:https://stackoverflow.com/questions/28367811/color-in-storyboard-not-matching-uicolor

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!