Пустой UIStackView вызывает неоднозначную высоту / положение - PullRequest
0 голосов
/ 19 октября 2019

У меня есть два вида: один UIView и один UIStackView

let mainView = UIView()
mainView.translatesAutoresizingMaskIntoConstraints = false

let stackView = UIStackView()
stackView.axis = .vertical
stackView.translatesAutoresizingMaskIntoConstraints = false

Они оба добавляются в superView с этими ограничениями

NSLayoutConstraint.activate([
    mainView.topAnchor.constraint(equalTo: view.topAnchor),
    mainView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
    mainView.leadingAnchor.constraint(equalTo: view.leadingAnchor),

    stackView.topAnchor.constraint(equalTo: mainView.bottomAnchor),
    stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
    stackView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
    stackView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
])

Когда обаUIView и UIStackView не содержит никаких других видов, я получаю предупреждения для обоих видов в debugger

Высота неоднозначна для просмотра

Высота и вертикальПозиция неоднозначна для uistackview

Но если я добавлю UIButton к UIStackView, а затем установлю его скрытым с .isHidden = true, оба предупреждения исчезнут, за исключением iOS10, гдеоба предупреждения остаются.

С или без debugger warnings Я получаю желаемый результат: если UIStackView пуст (или все subviews скрыты), UIView охватывает весь экран.

Что здесь происходит, почему одно скрытое представление не совпадает с пустым stackView и почему поведение отличается на iOS10? И наконец, что не менее важно, как я могу удовлетворить iOS10, не ставя под угрозу мою текущую раскладку, которая, похоже, работает для всего после iOS10?

1 Ответ

0 голосов
/ 19 октября 2019

Вот что вы получили - mainView и stackView не имеют высоты, а края обрезаны. На основе этих ограничений невозможно рассчитать вертикальное положение и высоту. Вы можете добавить некоторое ограничение по высоте в любом виде, чтобы сделать его понятным для автоматического макета

mainView.heightAnchor.constraint(greaterThanOrEqualToConstant: 1) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...