Как я могу преобразовать такой цвет в код UIColor?

ановил цвет дляUIButton с визуальным редактором XCode. Я установил его с помощью ползунков RGB.

Затем я устанавливаю переменнуюgreen:

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

Когда я распечаталgreen значение иUIButton.backgroundColor Я получил следующие значения соответственно:

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

Итак, как я полагаю, цветовые пространства равны, а значения - нет. Почему это так? UIButton Apple () делает некоторые скрытые преобразования? Какова цель? Можно ли иметь одинаковые значения для этого свойства кнопки и дляgreen свойство.

Ответы на вопрос(1)

Решение Вопроса

позволяющая выбрать цветовое пространство:

В вашем случае он установлен на «Дисплей P3», цветовое пространство которого «больше», чем цветовое пространство sRGB, и позволяет отображать больше цветов на новых устройствах с дисплеем P3. Этот цвет представлен в «расширенном цветовом пространстве sRGB», где компоненты не ограничены диапазоном от 0,0 до 1,0 (см. «Цвет и цветовое пространство» вUIColor для дополнительной информации). В твоем случае

UIExtendedSRGBColorSpace -0.416964 0.838774 -0.249501 1

с отрицательными красными и синими компонентами, то есть цветовой гаммой sRGB.

Если вы установите цветовое пространство в окне выбора цвета на «sRGB», то результат для 0/210/0 будет

UIExtendedSRGBColorSpace 0 0.823529 0 1

и идентично

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

В качестве альтернативы, используйте цветовое пространство Display 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
 Andrew V. Jackson23 нояб. 2017 г., 09:48
Спасибо за хороший исчерпывающий ответ!
 Daniel Springer26 нояб. 2018 г., 05:49
Как я могу преобразовать такой цвет в код UIColor?

Ваш ответ на вопрос