是否可以使 @IBDesignable 覆盖 Interface Builder 值?
Is it possible to make @IBDesignable override Interface Builder values?
例如,我想继承 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)
}
}
但这不影响在 Interface Builder 中的预览,所有自定义按钮默认显示 15.0f
字体大小。有什么想法吗?
我认为您也必须使用框架初始化程序重写 init 才能影响它
override init(frame: CGRect) {
super.init(frame: frame)
self.customInit()
}
我创建了新的 IBInspectable
作为 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)
}
}
希望这就是您要找的。
例如,我想继承 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)
}
}
但这不影响在 Interface Builder 中的预览,所有自定义按钮默认显示 15.0f
字体大小。有什么想法吗?
我认为您也必须使用框架初始化程序重写 init 才能影响它
override init(frame: CGRect) {
super.init(frame: frame)
self.customInit()
}
我创建了新的 IBInspectable
作为 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)
}
}
希望这就是您要找的。