Шестигранные цвета в iOS не точны

Я обнаружил, что когда вы устанавливаете представление backgroundColor в xib, отображаемый цвет явно отличается от того, когда вы устанавливаете backgroundColor программно.

Вот пример.

У меня есть два представления в этой простой демонстрации. Я установил верхний вид backgroundColor в xib, например: enter image description here

Значение шестнадцатеричного цвета равно 0x1BA9BA. Затем я устанавливаю нижний вид backgroundColor программно с тем же шестнадцатеричным значением цвета. Я использую следующий код:

NSInteger hexValue = 0x1ba9ba;
self.testView.backgroundColor = [UIColor colorWithRed:((float)((hexValue & 0xFF0000) >> 16)) / 255.0 
                                                  green:((float)((hexValue & 0xFF00) >> 8)) / 255.0 
                                                  blue:((float)(hexValue & 0xFF))/255.0 
                                                  alpha:1.0];

Результат выглядит следующим образом:

enter image description here

Как вы можете видеть, есть четкая разница в цвете. Что мне здесь не хватает?

Ответ 1

Я применил ползунки RGB к первому виду, а ваш код - ко второму виду, и цвета абсолютно идентичны (на мой взгляд) в симуляторе; это экранный снимок с симулятора:

enter image description here

Тем не менее, я ввел эти цифры в подборщик цветов (27, 169, 186), когда цветовое пространство выбора цвета было установлено в Generic RGB. Если я переключусь на sRGB, а затем введите эти цифры, я могу воспроизвести вашу проблему. Так что это проблема цветового пространства в конце концов; просто начните с цветового пространства, установленного в Generic RGB, и теперь числа будут совпадать.