#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. Ух ты, это первый раз, когда я такое вижу. Спасибо!