如何覆盖在父类中设置的约束

时间:2016-10-29 19:53:24

标签: ios swift

我创建了一个父类,它只是一个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

这似乎在我的约束中引起冲突,因为从技术上来说,我设置了两次。有没有办法覆盖初始约束以避免这些警告?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

不要创建新约束。控制 - 从您想要更改的约束拖动到类的源文件中,以创建约束的出口。

然后,您可以更改约束的常量值以更改其数量。