viewDidLayoutSubviews () проблема - PullRequest
       0

viewDidLayoutSubviews () проблема

0 голосов
/ 20 апреля 2020

У меня есть следующий экран, чтобы центрировать прямоугольники между uilabel и клавиатурой, я создал простой расчет, в котором я добавил высоту заголовка, затем высоту uilabel, а затем высоту клавиатуры минус весь размер экрана и разделил все на два для того, чтобы получить центральную точку [я добавил код ниже, хотя это не актуально]

Проблема в том, что для получения высоты UILabels мне нужно установить ограничения в viewDidLayoutSubviews (). Теперь идея состоит в том, что каждый раз, когда вы заполняете один блок, следующий блок становится первым респондентом, но это не работает, потому что каждый раз, когда блок становится первым респондентом, вызывается viewDidLayoutSubviews ().

Что я могу с этим сделать? Есть ли способ получить высоту uiLabel без вызова viewDidLayoutSubviews ().

Это код для центрирования полей:

    override func viewDidLayoutSubviews() {
    let allItems = headerC.frame.height + stackViewOfDefin.frame.height + 270 + 20
    let getSpace = UIScreen.main.bounds.height - allItems
    let stackview = UIStackView(arrangedSubviews: gameBoxes)
    stackview.axis = .horizontal
    stackview.spacing = 5
    stackview.distribution = .fillEqually
    stackview.translatesAutoresizingMaskIntoConstraints = false
    self.view.addSubview(stackview)
    NSLayoutConstraint.activate([
        stackview.topAnchor.constraint(equalTo: secondLine.bottomAnchor, constant: getSpace/2-30),
        stackview.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
        stackview.leadingAnchor.constraint(greaterThanOrEqualTo: view.leadingAnchor, constant: 10),
        stackview.trailingAnchor.constraint(lessThanOrEqualTo: view.trailingAnchor, constant: -10)
        ])
}

enter image description here

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