web-dev-qa-db-ja.com

ストーリーボードの色がUIColorと一致しない

私はコードで色を定義しています

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

ストーリーボードで同じ色を設定しようとすると、アプリを実行すると、コードで定義された色とは少し異なる色になります。色を口蓋にドラッグしてから、別の色を選択し、口蓋の色をもう一度選択すると、HSB値はわずかに異なります。インターフェイスビルダーで異なる(RGB?)色にスナップしているようです。

55
Nick

Xcode 8 +、iOS 10 +

私は最近この問題に直面し、投稿された回答のどれもそれをしませんでした。 iOS 10 SDKのリリースでは、UIColor初期化子init(red:green:blue:alpha:)が拡張sRGB範囲を使用するようになったため、ストーリーボードで色の値を構成する際にそれに応じて設定する必要があります。

enter image description here

Appleのドキュメントを参照してください: https://developer.Apple.com/reference/uikit/uicolor/1621925-init

193
camilomq

同じ問題がありました。ストーリーボードの色のランタイムRGB値が、実行時にコードで作成されたUIColorと一致していませんでした。これを構成するときに、色を「Generic RGB」(デフォルトのsRGB)に設定することで、ストーリーボードでこれを修正できました。以下は、IBで私が話していることのスクリーンショットです。

IB Color config util

36
mattr

Swift 3

私の場合、正確に正確だったのはカラーLCD

enter image description here

私が助けたことを願っています:-D

8

コードを使用すると、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スクリーンショット

実際、この問題はiOS 10とは関係ありません。iOS10以降では、UIColor initはsRGBではなく「拡張sRGB」を使用します。そして、これは、0.0未満および1.0を超えるr g b値を使用する場合にのみ問題を引き起こします。

iOS 10 UIColor関連

2
Jirui

これはバグのようです。コードでIBによって設定された色を記録すると、値はH:27.982594 S:0.899257 B:0.953253になります。

Appleにバグレポートを提出しました:rdar:// 19744216

Zaphに感謝

記録する:

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