Вопрос по uiview, ios – Разница в цвете между drawRect и Интерфейсным Разработчиком?

8

Просто у меня есть 2 вида в конструкторе интерфейсов, один из которых настроен на цвет 99,99,99 с помощью ползунков RGB в конструкторе интерфейсов.

enter image description here

Другой вид окрашен программно для достижения определенной формы. Я заполняю это, используя:

//Obviously, this is in drawRect.
[[UIColor leadColor] set];
CGContextEOFillPath(myContext);

//And this is a category on UIColor
+ (UIColor *)leadColor {
    return [UIColor colorWithWhite:99/255.0 alpha:1.0];
}

Результат:

enter image description here

Почему существует эта разница?

EDIT: (unecessary drawRect Code removed)

EDIT2:

Итак, вот я лгу самому себе ». Разработчик интерфейса показал RGB 99,99,99 как 80,80,80. Бьюсь об заклад, это смещает число на 19. & quot; & GT;. & GT; ... Отчаянный человек, использующий XCode, думает о таких безумных вещах, как это .. Результат:

Perfect!!

PERFECT!!, ноwhy???? Еще один баг Xcode? Я нашел около 10 из них в прошлом месяце ...

Ты пытался[UIColor colorWithRed:99/255.0 green:99/255.0 blue:99/255.0 alpha:1.0]? Clafou
NOTE: У меня есть немногоvery интересная информация. Позвольте мне опубликовать их, прежде чем вы, ребята, попробуете что-то еще. Mazyod
Спасибо за тестирование. Просто замениCGContextEOFillPath(myContext); сCGContextFillRect, Проще, просто для проверки. Mazyod
Опубликовать полный DrawRect как две строки вместе сUIGraphicsGetCurrentContext не рисуют цвет над видом. A-Live
@Mazyod все равно не работает сCGContextFillRect(myContext, self.frame);, Пожалуйста, опубликуйте код, который вы используете. A-Live

Ваш Ответ

2   ответа
1

colorWithWhite использованияпространство в градациях серогои цвет 99 в пространстве градаций серого не соответствует цвету (99,99,99) в пространстве RGB.

Таким образом, чтобы получить тот же результат, что и в Интерфейсном Разработчике, вам нужно использовать пространство RGB. Замените ваш вызов colorWithWhite следующим:

[UIColor colorWithRed:99/255.0 green:99/255.0 blue:99/255.0 alpha:1.0]
Weird! Если вы откроете .xib в текстовом редакторе и посмотрите на значение цвета, что вы увидите?
То, что вы говорите, имеет смысл, однако, это не так. Скриншот, который я загрузил, имеет два разных серых цвета, нарисованныйdrawRect + leadColor = RGB 99,99,99. (то есть colorWithWhite - это то же самое, что и код, который вы предоставили. Тем не менее, я протестировал его, бесполезно). Тем не менее, цвет, установленный в IB, отображается как RGB 80,80,80. Mazyod
& lt; object class = & quot; NSColor & quot; ключ = & Quot; IBUIBackgroundColor & Quot; & GT; & lt; int key = "NSColorSpace" & gt; 2 & lt; / int & gt; & lt; bytes key = "NSRGB" MC40NjI3NDUwOTggMC40NjI3NDUwOTggMC40NjI3NDUwOTgAA & lt; / bytes & gt; & Lt; / объект & GT; .. Не имеет смысла для меня. Mazyod
Хотя вы правы в вопросе о пустом пространстве, это проблема цветового пространства.
22

Я наконец достиг стадии тонкой настройки этого приложения, и мне пришлось решить эту проблему, поэтому я искал и легко нашел решение:

Как ввести значения RGB в Интерфейсный Разработчик?

Illustration:

enter image description here

Спасибо! Сработало для меня тоже!
Спасибо за это. Я бы не подумал сделать это в IB
У меня была такая же проблема и я проверил цвета с фейерверком Jejej
Благодарю. Работал на меня.

Похожие вопросы