显示具有程序性约束的按钮

时间:2017-01-08 05:06:08

标签: swift uiview uibutton xcode8 ios10

尽管在我的按钮的前导和顶部锚点上添加了约束(我试图在列表中显示它们),但视图会在视图的左上角显示所有这些。我正在调用许多方法来尝试应用约束,但它们似乎都没有工作。救命啊!

func displayButtonArray(buttons: [UIButton]) {
    var previousButton: UIButton = buttons[0]
    for (i, button) in buttons.enumerated() {
        button.setTitle("SampleButton", for: .normal)
        button.setTitleColor(.black, for: .normal)
        button.sizeToFit()

        let margins = self.view.layoutMarginsGuide
        button.leadingAnchor.constraint(equalTo: margins.leadingAnchor)
        if i == 1 {
            button.topAnchor.constraint(equalTo: margins.topAnchor, constant: CGFloat(5.0))
        } else {
            button.topAnchor.constraint(equalTo: previousButton.bottomAnchor, constant: CGFloat(10.0))
        }
        previousButton = button

        button.translatesAutoresizingMaskIntoConstraints = false
        button.setNeedsUpdateConstraints()
        button.setNeedsLayout()

        self.view.addSubview(button)
    }
    self.view.setNeedsUpdateConstraints()
    self.view.setNeedsLayout()
    self.view.layoutSubviews()
}

1 个答案:

答案 0 :(得分:0)

正如您所指出的,约束已定义但未激活。

我可以补充一点,就像Apple提到的那样,AutoLayout约束应该一起激活。

您可以逐个激活它们,但一起激活它们会更有效;导致更好的表现。