Измените размер представления в UIStackView, чтобы заполнить оставшийся размер экрана во время выполнения

На моей раскадровке есть следующая установка:

UIScrollView
|- UIStackView
    |- View1
    |- View2
    |- View3
    |- View4

Некоторый контент внутри View1-4 является динамическим, а View2 имеет кнопку. Если щелкнуть эту кнопку, ScrollView прокручивается до смещения, так что View2 находится в верхней части видимого экрана. View2 имеет фиксированную и известную высоту 100. Как я теперь могу изменить размер View3 после нажатия кнопки и выполнения прокрутки, чтобы он заполнял оставшуюся часть экрана, работая на всех устройствах? Нужно ли мне рассчитать высоту экрана и вычесть высоту View2? Или есть какой-нибудь бережливый способ с автопластинкой?


person Pauli    schedule 07.01.2019    source источник


Ответы (1)


Вы можете создать ограничение для высоты View3, равное высоте корневого вида, с константой -100. Затем вы можете просто переключить isActive на это ограничение, и View3 должен автоматически изменить размер так, как вы этого хотите.

person Rengers    schedule 07.01.2019
comment
Могу ли я установить это значение ограничения в IB? Скорее всего не из-за высоты экрана да? Нужно ли мне создать выход для ограничения и установить значение в viewDidLoad? - person Pauli; 07.01.2019
comment
Вы можете установить его в IB, если UIViewController покрывает весь экран, сделав его равным представлению UIViewController. Вы также можете сделать его равным высоте UIScrollView, если это более уместно. Это зависит от вашей иерархии представлений. И вам понадобится IBOutlet или обычное свойство для переключения isActive. - person Rengers; 07.01.2019