Глобальная цветовая палитра для интерфейса

В 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() }
}

Ответ 1

Лучшее решение, которое я нашел для этой проблемы, - это создание каталога активов для цветов дома, который может использоваться Interface Builder.

https://help.apple.com/xcode/mac/current/#/dev10510b1f7

Ответ 2

Насколько я знаю, вы не можете программно определить цвета, которые затем будут отображаться в 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.