2012-05-28 2 views
8

Просто у меня есть 2 вида в построителе интерфейса, один из которых настроен на цвет 99,99,99, используя ползунки RGB в построителе интерфейса.Разница в цвете между drawRect и Interface Builder?

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: (drawRect код ненужным удален)


EDIT2:

Итак, вот я лежу себе .. «Интерфейс строитель показал RGB 99,99 , 99 как 80,80,80. Держу пари, что он смещает число на 19. " .>> ... Отчаянный человек с помощью Xcode думает сумасшедшие вещи, как это .. Результат:

Perfect!!

ИДЕАЛЬНЫЙ !!, но почему ???? Еще одна ошибка Xcode? Я нашел 10 из них за последний месяц ...

+0

сообщение полной DrawRect ой как в двух строках вместе с 'UIGraphicsGetCurrentContext' не рисуют цвет над представлением. –

+0

Спасибо за тестирование. Просто замените 'CGContextEOFillPath (myContext);' с 'CGContextFillRect'. Проще, просто чтобы проверить. – Mazyod

+1

Вы пробовали '[UIColor colorWithRed: 99/255.0 green: 99/255.0 blue: 99/255.0 alpha: 1.0]'? – Clafou

ответ

22

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

How do I enter RGB values into Interface Builder?

Иллюстрация:

enter image description here

+1

Спасибо за это. Я бы не подумал сделать это в IB – CVertex

+0

У меня была та же проблема и были проверены цвета с фейерверками jejej –

+0

спасибо. Работал для меня. – db42

1

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

Итак, чтобы получить тот же результат, что и в Interface Builder, вам необходимо использовать пространство RGB. Заменить вызов colorWithWhite с этим:

[UIColor colorWithRed:99/255.0 green:99/255.0 blue:99/255.0 alpha:1.0] 
+0

То, что вы говорите, имеет прекрасный смысл, однако это не так. Загруженный снимок экрана имеет два разных оттенка серого: один, нарисованный 'drawRect' +' leadColor' = RGB 99,99,99. (то есть colorWithWhite совпадает с кодом, который вы предоставили.Тем не менее, я тестировал его, бесполезно). Тем не менее, цвет, установленный в IB, отображается в виде RGB 80,80,80. – Mazyod

+0

Странно! Если вы откроете свой .xib в текстовом редакторе и оглядитесь на значение цвета, что вы видите? – Clafou

+0

<объект класса = "NSColor" ключ = "IBUIBackgroundColor"> \t \t \t \t \t \t \t \t \t \t \t 2 \t \t \t \t \t \t \t \t \t \t \t <байт ключ = "NSRGB"> MC40NjI3NDUwOTggMC40NjI3NDUwOTgg0 \t \t \t \t \t \t \t \t \t \t .. не делает никакого смысла для меня. – Mazyod