2015-08-13 5 views
4

Например, я хочу подкласс UIButton и установить его шрифт 20.0f по умолчанию. Я могу написать что-то вроде этого:Возможно ли сделать значения @BDesignable переопределения значений Interface Builder?

@IBDesignable 

class HCButton: UIButton { 
    required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
    self.customInit() 
    } 

    func customInit() { 
    titleLabel?.font = UIFont.systemFontOfSize(20) 
    } 
} 

Но это не влияет на предварительный просмотр в Interface Builder, все пользовательские кнопки появляются с 15.0f размером шрифта по умолчанию. Есть предположения?

ответ

4

Я создал новый IBInspectable в testFonts:

import UIKit 

@IBDesignable 

class CustomButton: UIButton { 
    override init(frame: CGRect) { 
     super.init(frame: frame) 
     self.customInit() 
    } 

    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     self.customInit() 
    } 

    func customInit() { 
     titleLabel?.font = UIFont.systemFontOfSize(20) 
    } 

    convenience init() { 
     self.init(frame:CGRectZero) 
     self.customInit() 
    } 

    override func awakeFromNib() { 
     super.awakeFromNib() 
     self.customInit() 
    } 

    override func prepareForInterfaceBuilder() { 
     super.prepareForInterfaceBuilder() 
     self.customInit() 
    } 
} 

Надеется, что это помогает :)

Это работает для меня.

+0

Будет ли '@ BIInspectable var testFonts: UIFont' появляться в Interface Builder? – orkenstein

+0

@orkenstein Нет :(Он не отображается, но размер шрифта изменен. –

+0

Удалите его из списка и вставьте 'titleLabel? .font = UIFont.systemFontOfSize (20)' из оригинального вопроса. Это может смутить какого-то странника. подсказка! – orkenstein

0

Я думаю, вы должны переопределить инициализации с рамкой инициализатором, а также влиять на что

override init(frame: CGRect) { 

    super.init(frame: frame) 
    self.customInit() 
} 
+0

Этого недостаточно – orkenstein

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

  • Нет связанных вопросов^_^