我创建了一个名为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中的新增功能.
你可以做到@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中的新增功能.