Ответ 1
Лучшее решение, которое я нашел для этой проблемы, - это создание каталога активов для цветов дома, который может использоваться Interface Builder.
В swift я пишу расширение (например, Obj-C category), которое поддерживает методы класса кода "цвета дома". Мне интересно, есть ли способ сделать это расширение цвета доступным для Interface Builder с использованием IBInspectable или что-то еще, в отличие от прикрепления цветов специально к подклассам UIView, как я видел во многих примерах использования IBInspector.
extension UIColor {
// house blue
@IBInspectable var houseBlue: UIColor { return UIColor(red:(51/255), green:(205/255), blue:(255/255), alpha:(1)) }
// house gray
@IBInspectable var houseGray: UIColor { return UIColor(white:0.4, alpha: 1) }
// house white
@IBInspectable var houseWhite: UIColor { return UIColor.whiteColor() }
}
Лучшее решение, которое я нашел для этой проблемы, - это создание каталога активов для цветов дома, который может использоваться Interface Builder.
Насколько я знаю, вы не можете программно определить цвета, которые затем будут отображаться в Interface Builder, но вы можете расширить UIColor
для пользовательских цветов, которые будут использоваться в вашем коде:
extension UIColor {
static func myCustomColor() -> UIColor {
return UIColor(red: 23/255.0, green: 175/255.0, blue: 72/255.0, alpha: 1.0)
}
}
И для ссылки на пользовательский цвет:
myView.backgroundColor = UIColor.myCustomColor()
Это не полностью решает вашу проблему, но потенциально может быть лучше установить цвета программно, чем через IB. Это позволит вам настроить значение один раз в коде, чтобы изменить цвет во всем приложении, а не настраивать его несколько раз для каждого элемента пользовательского интерфейса через Interface Builder.