создать цикл для размещения 2 разных объектов на контроллере uiview - PullRequest
0 голосов
/ 07 ноября 2019

Мой код ниже делает именно то, что я ищу для проблемы, он просто делает это в uibtton. Я хотел бы сделать то же самое с 2 uitextfields и 2 uilabels. Таким образом, текстовое поле, чтобы uilabel к текстовому полю, чтобы uilabel. Я предполагаю, что вам просто нужно поменять «кнопку в», но я не знаю, с чем ее менять. Я хочу, чтобы объекты располагались на расстоянии 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
}

}

1 Ответ

0 голосов
/ 07 ноября 2019

Просто поместите текстовые поля и метки в нужном порядке в массиве и замените на него часть [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 может сделатьВаша жизнь намного проще. Я предлагаю вам посмотреть, как это использовать.

...