使用@IBDesignable更改标签的字体

时间:2016-07-01 15:02:46

标签: ios swift

这是一个应该在Storyboard中动态更改标签字体的类:

@IBDesignable class FlexibleLabel: UILabel {
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.font = UIFont(name: "Brandon Grotesque", size: self.font.pointSize)
    }
}

我将这个类分配给了一些标签,但是我收到了这个错误:

  

无法更新自动布局状态:代理崩溃。

我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:1)

要弄清楚代理崩溃的原因,请在故事板中选择FlexibleLabel实例,然后从菜单栏中选择编辑器>调试所选视图。如果问题出现在您的代码中,Xcode应该会在崩溃时将您置于调试器中。

在编辑故事板时,Xcode不会使用init(coder:)来创建视图。它使用init(frame:),然后使用KVC(键值编码)设置视图的属性。

答案 1 :(得分:1)

在视图完全从nib初始化之后调用的第一个方法是UIView的awakeFromNib()方法。您可以覆盖并使用它来修改视图或子视图属性