我创建了一个父类,它只是一个UIStackView,其中包含将在整个应用程序中使用的其他一些通用属性。
class baseStackView:UIView {
var stack: UIStackView
init(_ coder: NSCoder? = nil) {
stack = UIStackView()
stack.axis = UILayoutConstraintAxis.vertical
stack.distribution = UIStackViewDistribution.fill
stack.spacing = 20
if let coder = coder {
super.init(coder: coder)!
} else {
super.init(frame: CGRect.zero)
}
addSubview(stackView)
}
}
override func didMoveToSuperview() {
super.didMoveToSuperview()
setupConstraints()
}
private func setupConstraints() {
translatesAutoresizingMaskIntoConstraints = false
stack.translatesAutoresizingMaskIntoConstraints = false
stack.topAnchor.constraint(equalTo: topAnchor, constant: 20).isActive = true
stack.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 32).isActive = true
stack.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -32).isActive = true
}
现在,我遇到了一种情况,我需要更改stackView的前导和尾随锚点,以更改我所需视图之一的外观。
很自然地,我只是在我的一个子课程中再次设置了尾随,领先的约束。
var baseView: BaseStackView
baseView = BaseStackView()
baseView.stack.translatesAutoresizingMaskIntoConstraints = false
baseView.stack.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true
baseView.stack.trailingAnchor.constraint(equalTo: trailingAnchor).isActive = true
这似乎在我的约束中引起冲突,因为从技术上来说,我设置了两次。有没有办法覆盖初始约束以避免这些警告?任何帮助将不胜感激。
答案 0 :(得分:0)
不要创建新约束。控制 - 从您想要更改的约束拖动到类的源文件中,以创建约束的出口。
然后,您可以更改约束的常量值以更改其数量。