Шестигранные цвета в 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, и теперь числа будут совпадать.