创建一个循环,每次调用一个值时加 40
create a loop to add 40 everytime a value is called
我正在定位 3 个具有相同高度和宽度以及相同 x 值的 uibtton,我唯一想要改变的是我希望每个 uibutton 添加 40 个正数以将其分开。我认为有一些方法可以通过循环来执行此操作,而不是像我在下面所做的那样手动执行此操作。我希望 (equalTo: view.centerYAnchor, constant : 0), 每次被调用时都被 yP plus 40 替换。
var yP = 0
undoButton.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :25),
undoButton.topAnchor.constraint(equalTo: view.centerYAnchor, constant : 0),
undoButton.widthAnchor.constraint(equalToConstant: CGFloat(widthBox)),
undoButton.heightAnchor.constraint(equalToConstant: 20),
clearButton.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :25),
clearButton.topAnchor.constraint(equalTo: view.centerYAnchor, constant : 40),
clearButton.widthAnchor.constraint(equalToConstant: CGFloat(widthBox)),
clearButton.heightAnchor.constraint(equalToConstant: 20),
color.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :25),
color.topAnchor.constraint(equalTo: view.centerYAnchor, constant : 80),
color.widthAnchor.constraint(equalToConstant: CGFloat(widthBox)),
color.heightAnchor.constraint(equalToConstant: 20),
试试这个。
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
}
}
您可以使用enumerated
方法同时遍历索引和按钮。您将需要索引来计算顶部约束。您还应该激活您的约束。
for (index, button) in [undoButton, clearButton, color].enumerated() {
button.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :25).isActive = true
// note this line
button.topAnchor.constraint(equalTo: view.centerYAnchor, constant : index * 40).isActive = true
button.widthAnchor.constraint(equalToConstant: CGFloat(widthBox)).isActive = true
button.heightAnchor.constraint(equalToConstant: 20).isActive = true
}
我正在定位 3 个具有相同高度和宽度以及相同 x 值的 uibtton,我唯一想要改变的是我希望每个 uibutton 添加 40 个正数以将其分开。我认为有一些方法可以通过循环来执行此操作,而不是像我在下面所做的那样手动执行此操作。我希望 (equalTo: view.centerYAnchor, constant : 0), 每次被调用时都被 yP plus 40 替换。
var yP = 0
undoButton.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :25),
undoButton.topAnchor.constraint(equalTo: view.centerYAnchor, constant : 0),
undoButton.widthAnchor.constraint(equalToConstant: CGFloat(widthBox)),
undoButton.heightAnchor.constraint(equalToConstant: 20),
clearButton.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :25),
clearButton.topAnchor.constraint(equalTo: view.centerYAnchor, constant : 40),
clearButton.widthAnchor.constraint(equalToConstant: CGFloat(widthBox)),
clearButton.heightAnchor.constraint(equalToConstant: 20),
color.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :25),
color.topAnchor.constraint(equalTo: view.centerYAnchor, constant : 80),
color.widthAnchor.constraint(equalToConstant: CGFloat(widthBox)),
color.heightAnchor.constraint(equalToConstant: 20),
试试这个。
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
}
}
您可以使用enumerated
方法同时遍历索引和按钮。您将需要索引来计算顶部约束。您还应该激活您的约束。
for (index, button) in [undoButton, clearButton, color].enumerated() {
button.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :25).isActive = true
// note this line
button.topAnchor.constraint(equalTo: view.centerYAnchor, constant : index * 40).isActive = true
button.widthAnchor.constraint(equalToConstant: CGFloat(widthBox)).isActive = true
button.heightAnchor.constraint(equalToConstant: 20).isActive = true
}