当前位置:  开发笔记 > 编程语言 > 正文

UILabel子类出现在Storyboard中

如何解决《UILabel子类出现在Storyboard中》经验,为你挑选了1个好方法。

我创建了一个名为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)
    }
}

Rob.. 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)
    }

}

注意,当我实施时,IB不喜欢它init(coder:),所以我把它移到了awakeFromNib.

另请注意,当您@IBDesignable上课时,Apple建议您为此可设计类创建单独的目标(例如"文件" - "新建" - "目标..." - "可可触摸框架").有关更多信息,请参阅WWDC 2014视频Interface Builder中的新增功能.



1> Rob..:

你可以做到@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)
    }

}

注意,当我实施时,IB不喜欢它init(coder:),所以我把它移到了awakeFromNib.

另请注意,当您@IBDesignable上课时,Apple建议您为此可设计类创建单独的目标(例如"文件" - "新建" - "目标..." - "可可触摸框架").有关更多信息,请参阅WWDC 2014视频Interface Builder中的新增功能.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有