Глобальная цветовая палитра для Interface Builder
В скором времени я пишу расширение (например, категорию Obj-C), которое поддерживает в коде методы класса "house colors". Мне интересно, есть ли способ сделать это расширение цвета доступным для Интерфейсного разработчика, используя 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() }
}
2 ответа
Лучшее решение, которое я нашел для этой проблемы, - это создание каталога активов для цветов дома, который может быть использован Интерфейсным Разработчиком.
https://blog.zeplin.io/asset-catalog-colors-on-xcode-9-c4fdccc0381a
Насколько я знаю, вы не можете программно определять цвета, которые затем будут отображаться в Интерфейсном Разработчике, но вы можете расширить 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.