Как сместить UIView и установить новый UIView программно с помощью Swift? - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть макет с моими данными, но в зависимости от данных мне нужно изменить расположение представлений. Я хочу поместить UIView (UILabel, UITextField ...) в верхнюю часть экрана и сдвинуть макет вниз, но я не знаю, как это сделать, я видел некоторые документы и учебные пособия, но не помог мне. Я сделал свой экран с раскадровкой.

Это оригинальный экран:

enter image description here

Это то, что я хочу:

enter image description here

Моя раскадровка:

enter image description here

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Я бы посоветовал настроить ваш экран с вашим «положением другого вида» и фиксированным ограничением высоты для этого вида. Сделайте так, чтобы представленные ниже виды имели фиксированное пространство внизу «другого вида здесь.»

Затем перетащите контроль из ограничения высоты «поставить другой вид» в свой контроллер вида. Это сделает ограничение выходом.

Теперь отредактируйте ограничение высоты и установите его константу равным 0. Это сворачивает это представление до высоты 0, заставляя его исчезать, а другие виды сдвигаться вверх.

Затем в коде, когда вы хотите, чтобы отображалось «другое представление здесь», используйте выход, чтобы установить константу в этом представлении обратно к ее предыдущему ненулевому значению, а затем вызовите layoutIfNeeded() для родителя. view для обновления макетов вида на основе измененных ограничений.

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

Регулируя ограничение высоты на виде, вы можете показывать / скрывать его назад и вперед без особых усилий.

0 голосов
/ 03 сентября 2018

Если вы просто хотите добавить представление вверху стекового представления, используйте stackView.insertArrangedSubview(newView, at:0)

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