【发布时间】:2016-06-09 20:30:28
【问题描述】:
我想知道是否有办法从子类访问约束。我有一个自定义视图。我不确定是否可以访问我已经在 UI 中设置的约束,所以我尝试从子类本身创建约束。
class PerformanceView: UIView {
func initialize() {
let heightConstraint = NSLayoutConstraint(item: self, attribute: .Height, relatedBy: .Equal, toItem: superview, attribute: .Height, multiplier: 0.47, constant: 0);
superview.addConstraint(heightConstraint)
}
}
以上代码不完整。只是展示我正在尝试做的事情。所以两个问题。
1) 我可以从子类访问 UI 上的约束吗? 2)如果没有,我怎样才能在子类中创建一个高度约束是父视图高度的一半。
我确实有 PerformanceView 作为视图的类,你可以看到他们都在左边说 Performance View。其中 4 个。
【问题讨论】:
-
只需添加一个可选的(如果需要,可以隐式解包)
NSLayoutConstraint属性并让这个initialize方法更新它,而不是使其成为局部变量。顺便说一句,我可能会为此方法选择一个不同的名称,因为这会导致与继承自NSObject的initialize类方法混淆。
标签: swift swift2 nslayoutconstraint autolayout