在 uiviewcontroller 上创建一个 space 2 个不同对象的循环

create a loop to space 2 different objects on a uiviewcontroller

我下面的代码正是我正在寻找的问题,它只是在 uibtton 中执行此操作。我想用 2 个 uitextfields 和 2 个 uilabels 做同样的事情。所以 textfield 到 uilabel 到 textfield 到 uilabel。我假设您只需要更改 "button in" 但我不知道用什么来更改它。我希望对象之间的间距为 40,如下所示。

func setConstraints() {
var yPosition: CGFloat = 0

[undoButton, clearButton, color].forEach { button in
    NSLayoutConstraint.activate([
        button.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :25),
        button.topAnchor.constraint(equalTo: view.centerYAnchor, constant : yPosition),
        button.widthAnchor.constraint(equalToConstant: CGFloat(widthBox)),
        button.heightAnchor.constraint(equalToConstant: 20)
    ])
    yPosition += 40
}

}

只需将您的文本字段和标签按所需顺序放入数组中,然后用它替换 [undoButton, clearButton, color] 部分。从技术上讲,您 不需要 更改 button in 部分,因为它只是一个变量名。

[textField1, label1, textField2, label2].forEach { view in
    NSLayoutConstraint.activate([
        view.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :25),
        view.topAnchor.constraint(equalTo: view.centerYAnchor, constant : yPosition),
        view.widthAnchor.constraint(equalToConstant: CGFloat(widthBox)),
        view.heightAnchor.constraint(equalToConstant: 20)
    ])
    yPosition += 40
}

请注意,UIStackView 可能会让您的生活更轻松。我建议你看看如何使用它。