故事板中的 UILabel 子类外观

Posted

技术标签:

【中文标题】故事板中的 UILabel 子类外观【英文标题】:UILabel subclass appearance in Storyboard 【发布时间】:2016-01-04 14:49:23 【问题描述】:

我创建了一个名为 MyUILabel 的 UILabel 子类。唯一改变的是字体和字体大小。当我运行该应用程序时,它会按预期显示。但是,在情节提要中,会显示默认的 UILabel。有什么方法可以让 Storyboards 显示我的子类中的字体和字体大小?

MyUILabel:

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

【问题讨论】:

【参考方案1】:

你可以把它变成@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 框架”) .更多信息,请参见 WWDC 2014 视频What’s New in Interface Builder。

【讨论】:

超级!谢谢!希望您的回答也能对其他人有所帮助。 感谢它的工作,但是否可以更改属性检查器中的默认字体?

以上是关于故事板中的 UILabel 子类外观的主要内容,如果未能解决你的问题,请参考以下文章

UIButton子类在故事板中崩溃[重复]

不需要xcode故事板中的大写标签

故事板中 tableviewController 中的原型 tableview 单元格

故事板中控件的动态子类

故事板中tableviewController中的原型tableview单元格

UITableViewCell 子类布局在禁用自动布局的故事板中搞砸了