Xcode 是否可以使@IBDesignable重写接口生成器值?
例如,我希望子类化Xcode 是否可以使@IBDesignable重写接口生成器值?,xcode,swift,interface-builder,ibdesignable,Xcode,Swift,Interface Builder,Ibdesignable,例如,我希望子类化UIButton,并在默认情况下将其字体设置为20.0f。我可以这样写: @IBDesignable class HCButton: UIButton { required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) self.customInit() } func customInit () { titleLabel?.font = UIFont.system
UIButton
,并在默认情况下将其字体设置为20.0f
。我可以这样写:
@IBDesignable
class HCButton: UIButton {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.customInit()
}
func customInit () {
titleLabel?.font = UIFont.systemFontOfSize(20)
}
}
但这不会影响界面生成器中的预览,默认情况下,所有自定义按钮都以
15.0f
字体大小显示。有什么想法吗?我认为您必须使用帧初始值设定项覆盖init以影响它
override init(frame: CGRect) {
super.init(frame: frame)
self.customInit()
}
我已将新的
I可检测
创建为testFonts
:
import UIKit
@IBDesignable
class CustomButton: UIButton {
override init(frame: CGRect) {
super.init(frame: frame)
self.customInit()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.customInit()
}
func customInit () {
titleLabel?.font = UIFont.systemFontOfSize(20)
}
convenience init() {
self.init(frame:CGRectZero)
self.customInit()
}
override func awakeFromNib() {
super.awakeFromNib()
self.customInit()
}
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
self.customInit()
}
}
希望它能帮助你:)
这对我有效。更简单:以下解决方案通常对我有效
import UIKit
@IBDesignable
class CustomButton: UIButton {
open override func layoutSubviews() {
super.layoutSubviews()
customInit()
}
func customInit () {
titleLabel?.font = UIFont.systemFontOfSize(20)
}
}
我希望这就是您要查找的内容。是否将
@IBInspectable var testFonts:UIFont
显示在界面生成器中?@workenstein否:(未显示。但字体大小已更改。请将其从列表中删除并粘贴标题标签?.font=UIFont.systemFontOfSize(20)
来自最初的问题。这可能会让一些流浪者感到困惑。谢谢你提供的线索!是的,这没问题,我现在唯一能梦想的事情是——让这个默认值取代界面生成器中的字体值。嘿,@AshishKakkad,很棒的帖子!但是我注意到,在我的测试中,awakeFromNib
函数不需要用来制作customInit
设置在界面生成器中可见。添加该设置有什么原因吗?另外,我相信也不需要convency init()
。