问问题
1441 次
1 回答
5
这是因为 Inspectable 触发hasBottomLine
了要设置的属性,因此在加载主视图之前didSet
要调用属性观察器。
我猜你lineHeightConstraint
可能被定义为一个隐式展开的可选,比如:
@IBOutlet weak var lineHeightConstraint: NSLayoutConstraint!
在使用它之前,您必须解开可选项,例如:
lineHeightConstraint?.constant = hasBottomLine ? 3 : 0
加载视图后您可能仍需要设置此约束,因此您可能需要检查可选项是否包含 nil,如果是,请设置标志,并稍后在您的viewDidLoad
方法中执行此行。(或者也许你可以在你的 viewDidLoad 中调用它)
更新了答案,并提供了额外信息,即此代码位于子类 UIView 而不是 UIViewController 中。
viewDidLoad
您可以在 UIView 的方法中这样做,而不是在您的方法中更新约束常量layoutSubviews
。例如:
override func layoutSubviews() {
super.layoutSubviews()
lineHeightConstraint?.constant = hasBottomLine ? 3 : 0
}
于 2017-01-21T16:10:49.843 回答