Reputation: 4258
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.
Upvotes: 77
Views: 19333
Reputation: 518
Following are 3 lines to achieve the desired navigation bar background color:
navigationBar.isTranslucent = false
navigationBar.backgroundColor = UIColor.black
navigationBar.barTintColor = UIColor.black
Upvotes: 0
Reputation: 189
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)
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.
Upvotes: 3
Reputation: 750
Swift 3
In my case what was exactly accurate was Color LCD:
I hope I've helped :-D
Upvotes: 8
Reputation: 3041
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
Upvotes: 229
Reputation: 5518
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:
Upvotes: 40
Reputation: 4258
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]);
Upvotes: 1