故事板中的 UILabel 子类外观
UILabel subclass appearance in Storyboard
我创建了一个名为 MyUILabel 的 UILabel 子类。唯一改变的是字体和字体大小。当我 运行 应用程序时,它按预期显示。但是,在 Storyboard 中,会显示默认的 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)
}
}
你可以做到 @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
class 时,Apple 建议您创建一个单独的目标(例如 "File" - "New" - "Target..." - "Cocoa Touch Framework") 对于这个可设计的 class。有关详细信息,请参阅 WWDC 2014 视频 What’s New in Interface Builder。
我创建了一个名为 MyUILabel 的 UILabel 子类。唯一改变的是字体和字体大小。当我 运行 应用程序时,它按预期显示。但是,在 Storyboard 中,会显示默认的 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)
}
}
你可以做到 @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
class 时,Apple 建议您创建一个单独的目标(例如 "File" - "New" - "Target..." - "Cocoa Touch Framework") 对于这个可设计的 class。有关详细信息,请参阅 WWDC 2014 视频 What’s New in Interface Builder。