@IBInspectable var 是在哪个阶段设置的值
is @IBInspectable var did set value in which phase
这是我的代码
@IBDesignable class BarPopView: UIView {
@IBInspectable var ft: NSString = "1"
@IBInspectable var ffPrompt: NSString = "Area"
override init(frame: CGRect) {
super.init(frame: frame)
setupView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupView()
}
func setupView() {
print("text: \(ft), prompt: \(ffPrompt)")
}
}
我在界面生成器中设置了这些值
英尺:50
ff提示符:"Change"
但结果是打印
"text: 1, prompt: Area"
这是因为 setupView
方法在初始化期间被调用,在此期间属性具有初始值。
如果您想相应地调整它们,请使用 属性 observers:
@IBInspectable var ft: String = ""{
didSet {
setupView()
}
}
如果你想要
func setupView()
在所有 var 设置完成后执行,然后调用 ViewController class 的 viewDidLoad() 中的方法,您将在其中使用自定义视图
BarPopView
这是我的代码
@IBDesignable class BarPopView: UIView {
@IBInspectable var ft: NSString = "1"
@IBInspectable var ffPrompt: NSString = "Area"
override init(frame: CGRect) {
super.init(frame: frame)
setupView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupView()
}
func setupView() {
print("text: \(ft), prompt: \(ffPrompt)")
}
}
我在界面生成器中设置了这些值
英尺:50
ff提示符:"Change"
但结果是打印
"text: 1, prompt: Area"
这是因为 setupView
方法在初始化期间被调用,在此期间属性具有初始值。
如果您想相应地调整它们,请使用 属性 observers:
@IBInspectable var ft: String = ""{
didSet {
setupView()
}
}
如果你想要
func setupView()
在所有 var 设置完成后执行,然后调用 ViewController class 的 viewDidLoad() 中的方法,您将在其中使用自定义视图
BarPopView