Цвет в раскадровке не соответствует UIColor
Я определяю цвет в коде как
[UIColor colorWithHue:32.0/360.0 saturation:0.88 brightness:0.97 alpha:1]
Если я пытаюсь установить один и тот же цвет в раскадровке, при запуске приложения он немного отличается от цвета, определенного в коде. Если я перетащил цвет в небо, то выберите другой цвет и снова выберите неба, значения HSB немного отличаются. Кажется, он привязывается к другому (RGB?) Цвету в построителе интерфейса.
Ответы
Ответ 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]);