UILabel子类出现在Storyboard中

时间:2016-01-04 14:49:23

标签: swift uikit interface-builder xcode-storyboard

我创建了一个名为MyUILabel的UILabel子类。唯一改变的是字体和字体大小。当我运行应用程序时,它看起来像预期的那样但是,在故事板中,显示了默认的UILabel。有没有办法让Storyboard显示我的子类的字体和字体大小?

MyUILabel:

public class MyUILabel : UILabel {
    required public init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.font = UIFont(name: Constants.DefaultFont, size: 30)
    }
}

1 个答案:

答案 0 :(得分:9)

您可以将其设为@IBDesignable,然后实施prepareForInterfaceBuilder

@IBDesignable
public class MyUILabel: UILabel {

    public override func awakeFromNib() {
        super.awakeFromNib()
        configureLabel()
    }

    public override func prepareForInterfaceBuilder() {
        super.prepareForInterfaceBuilder()
        configureLabel()
    }

    func configureLabel() {
        font = UIFont(name: Constants.DefaultFont, size: 40)
    }

}

注意,当我实施init(coder:)时,IB并不喜欢它,因此我将其移至awakeFromNib

另请注意,当您进行@IBDesignable课程时,Apple会建议您创建一个单独的目标(例如"文件" - "新" - "目标..." - " Cocoa Touch Framework")这个可设计的类。有关详细信息,请参阅WWDC 2014视频What’s New in Interface Builder