Основная графика iOS: как правильно устанавливать и использовать цвета

#ios #colors #core-graphics #uibezierpath

#iOS #Цвет #ядро-графика #uibezierpath

Вопрос:

Недавно я начал разрабатывать приложение для iOS, чего раньше никогда не делал. У меня большой опыт работы с CSS-стилизацией, поэтому попытки работать с графическими объектами и библиотеками мне совершенно чужды.

Во многих руководствах, которые я видел, для рисования на экране используется CGGraphicsContext. Тем не менее, я пытаюсь нарисовать закругленный прямоугольник, и ответы, которые я видел о том, как это сделать, включают что-то вроде этого (кстати, это Swift, а не Objective-C. Классы все одинаковые, синтаксис разный):

 let buttonRect: UIBezierPath = UIBezierPath(roundedRect: rect, cornerRadius: 5.0)
buttonRect.fill()
 

Я реализую этот код в методе drawRect() моего подкласса UIButton, причем этот код предшествует:

 let color: UIColor = UIColor(red: 190, green: 190, blue: 190, alpha: 1.0)
color.setFill()
 

Исходя из того, что я знаю, вызов setFill() для цвета должен установить цвет заливки базовой графики на этот цвет, и все последующие вызовы fill() будут использовать этот цвет.

Когда я запускаю этот код, появляется закругленный прямоугольник, как я и ожидал, но он белый, а не тот цвет, который я указал.

Есть ли что-то, чего мне не хватает. Я не уверен, как пользовательский рисунок интегрируется с опциями в построителе интерфейсов, будет ли это как-то связано с этим?

Ответ №1:

Значения UIColor RGB варьируются от 0.0 до 1.0. Вам следует заменить эту строку

 let color: UIColor = UIColor(red: 190, green: 190, blue: 190, alpha: 1.0)
 

с этим:

 let color: UIColor = UIColor(red: 190.0/255.0, green: 190.0/255.0, blue: 190.0/255.0, alpha: 1.0)
 

Комментарии:

1. Ух ты, это первый раз, когда я такое вижу. Спасибо!