Как центрировать несколько кнопок по горизонтали в Swift? - PullRequest
0 голосов
/ 08 февраля 2019

Я создаю несколько кнопок программно.Например, если я создаю две кнопки с определенным интервалом между кнопками, я хочу расположить эти две кнопки горизонтально в контроллере вида.Как я могу сделать это с Swift?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Вы можете использовать UIStackView со свойством оси horizontal, добавить кнопки внутри UIStackView и добавить ограничения на stackView для центрирования в представлении.

Вот простой пример центрирования двух кнопок одинаково в нижней части экрана, на 8 пунктов выше направляющих safeAreaLayout.

class ViewController: UIViewController {

    lazy var button1: UIButton = {
        let button = UIButton()
        button.translatesAutoresizingMaskIntoConstraints = false
        button.backgroundColor = .red
        button.setTitle("Button1", for: .normal)
        return button
    }()

    lazy var button2: UIButton = {
        let button = UIButton()
        button.translatesAutoresizingMaskIntoConstraints = false
        button.backgroundColor = .blue
        button.setTitle("Button2", for: .normal)
        return button
    }()

    lazy var horizontalStackView: UIStackView = {
        let stackView = UIStackView(arrangedSubviews: [button1, button2])
        stackView.translatesAutoresizingMaskIntoConstraints = false
        stackView.axis = .horizontal
        stackView.distribution = .fillEqually
        stackView.spacing = 8
        return stackView
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubview(horizontalStackView)

        NSLayoutConstraint.activate([
            horizontalStackView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -8),
            horizontalStackView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 8),
            horizontalStackView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -8),
            horizontalStackView.centerXAnchor.constraint(equalTo: view.centerXAnchor), 
            horizontalStackView.heightAnchor.constraint(equalToConstant: 50)
        ])
    }
}

вот вид:

botton_center_buttons

Поиграйте с этим кодом на игровой площадке и измените его в соответствии с вашими требованиями.

0 голосов
/ 08 февраля 2019

UIStackView - это то, что вы ищете.

Пример

Сначала объявите btn1, btn2, затем поместите их в UIStackView.

lazy var horizontalStackView: UIStackView = {
    let sv = UIStackView(arrangedSubviews: [
        btn1,
        btn2
        ])
    sv.axis = .horizontal
    sv.spacing = 8
    return sv
}()

override func viewDidLoad() {
    view.addSubview(horizontalStackView)
    // Then setup its constraint of horizontalStackView
    horizontalStackView.translatesAutoresizingMaskIntoConstraints = false
    horizontalStackView.topAnchor...
}

Наконец, вам просто нужно привязать horizontalStackView как обычный UIView к тому месту, куда вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...