2015-07-21 2 views
10

В swift я пишу расширение (например, Obj-C category), которое поддерживает методы класса кода «цвета дома». Мне интересно, есть ли способ сделать это расширение цвета доступным для Interface Builder с использованием IBInspectable или что-то еще, а не прикреплять цвета специально к подклассам UIView, как я видел во многих примерах использования IBInspector.Глобальная цветовая палитра для интерфейса Builder

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

Это было бы замечательно! Но это невозможно из моих знаний. Однако вы можете добавить пользовательскую цветовую палитру внутри интерфейса Builder, но я думаю, что они доступны только для использования там. –

+0

Вы пытаетесь использовать его только в раскадровках, но не в вашем фактическом коде, например 'UIView.backgroundColor = x'? –

+0

Оба, действительно. @CodyWeaver – achi

ответ

3

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

Смежные вопросы