2017-11-22 18 views
2

UIButtonの色をXCodeビジュアルエディタで設定しました。 RGBスライダーを使って設定しました。 enter image description hereUIExtendedSRGBColorSpaceを自分の色の値に一致させる方法

そしてIは設定​​変数:私は推測として

UIExtendedSRGBColorSpace -0.146119 0.836984 -0.0130851 1 
UIExtendedSRGBColorSpace 0 0.823529 0 1 

そこで、色空間が等しい:私はそれに応じて次の値を持っ​​値とUIButton.backgroundColorをプリントアウト

let green = UIColor(red: 0, green: 210/255, blue: 0, alpha: 1) 

値はありません。それはなぜそうですか?アップルのUIButton()は隠れた変換を行いますか?目的は何ですか?このボタンプロパティと​​プロパティの値を同じにすることは可能ですか?

答えて

1

「RGBスライダー」ポップアップメニューの隣に あなたは色空間を選択することができるボタンがあります:あなたのケースでは

enter image description here

それは「表示P3」、色に設定されていますスペースは、 で、sRGBカラースペースよりも「大きく」、新しいデバイスにP3ディスプレイでさらに 色を表示することができます。この色は、「拡張sRGB色空間」の で表され、コンポーネントは では0.0〜1.0の範囲に制限されていません(詳細はUIColor の「色と色空間」を参照)。負の赤と青の成分を使用して場合

UIExtendedSRGBColorSpace -0.416964 0.838774 -0.249501 1 

はsRGBの色域 外側すなわち色。

あなたはカラーチューに「sRGBの」で色空間を設定した場合、0/210/0の結果が表示を使用し、また

let green = UIColor(red: 0, green: 210/255, blue: 0, alpha: 1) 

UIExtendedSRGBColorSpace 0 0.823529 0 1 

と同じになりますP3の色空間は、プログラムによっても 作成された色:

print(label.backgroundColor!) 
// UIExtendedSRGBColorSpace -0.416964 0.838774 -0.249501 1 

let green = UIColor(displayP3Red: 0, green: 210/255, blue: 0, alpha: 1) 
print(green) 
// UIDisplayP3ColorSpace 0 0.823529 0 1 
print(UIColor(cgColor: green.cgColor)) 
// UIExtendedSRGBColorSpace -0.416964 0.838774 -0.249501 1 

print(label.backgroundColor! == green) 
// true 
+0

ありがとうございます素晴らしい包括ive答え! –

関連する問題