Подтвердить что ты не робот

Цвет в раскадровке не соответствует UIColor

Я определяю цвет в коде как

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

Если я пытаюсь установить один и тот же цвет в раскадровке, при запуске приложения он немного отличается от цвета, определенного в коде. Если я перетащил цвет в небо, то выберите другой цвет и снова выберите неба, значения HSB немного отличаются. Кажется, он привязывается к другому (RGB?) Цвету в построителе интерфейса.

4b9b3361

Ответ 1

Xcode 8+, iOS 10 +

Недавно я столкнулся с этой проблемой, и ни один из опубликованных ответов не сделал этого. Оказывается, что с выпуском SDK iOS 10, UIColor initializer init(red:green:blue:alpha:) теперь использует расширенный диапазон sRGB, поэтому вы должны соответственно установить его при настройке своих значений цвета на раскадровке.

введите описание изображения здесь

См. документацию Apple: https://developer.apple.com/reference/uikit/uicolor/1621925-init

Ответ 2

У меня была такая же проблема. Я видел RGB-значения Runtime времени исполнения от раскадровки, не соответствующие UIColors, созданным во время выполнения кода. Я смог исправить это в раскадровки, установив цвет как "Generic RGB" (по умолчанию sRGB) при его настройке. Вот скриншот, о котором я говорю в IB:

IB Color config util

Ответ 3

Swift 3

В моем случае то, что было точно точно, было Цветной ЖК-дисплей:

введите описание изображения здесь

Надеюсь, я помог:-D

Ответ 4

Кажется, это ошибка. При регистрации цвета, установленного 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]);