Поместите представление стека, содержащее больше представлений стека, в представление

У меня есть такой макет. Контроллер представления встроен в контроллер навигации, который, в свою очередь, встроен в контроллер панели вкладок, поэтому представление имеет как верхнюю, так и нижнюю панели.

введите описание изображения здесь

Метка и 3 кнопки имеют ограничения по высоте. А для серого представления установлено ограничение соотношения сторон.

Метка и серый вид встроены в одно представление стека. И 3 красные кнопки встроены в один стек. Наконец, оба stackviews и встроены в одно stackview.

Для всего охватывающего просмотра стека установлены ведущие, верхние и конечные ограничения.

введите описание изображения здесь

Когда я запускаю его на iPhone с большими экранами, такими как XS, проблем нет.

введите описание изображения здесь

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

введите описание изображения здесь

Какое ограничение мне нужно установить, чтобы основное представление стека соответствовало размерам экрана всех iPhone?

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

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

Демо-проект


person Isuru    schedule 18.07.2019    source источник
comment
Фактически, я решил проблему, но я не уверен, что это ожидаемый результат ... По сути, вы стремитесь сделать серый вид квадратом, что может быть недопустимым в случае отображения на экранах меньшего размера.   -  person Ahmad F    schedule 18.07.2019
comment
Кроме того, вы можете сделать серый вид квадратом, но он будет меньше, чем ожидается на небольших экранах.   -  person Ahmad F    schedule 18.07.2019


Ответы (1)


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

Вам нужно удалить верхнюю метку и middleView из основного представления стека и установить ограничения как

1- метка - ведущая, конечная, верхняя и высота ´´´´ высота необязательна

2- middleView - впереди, в конце, сверху до метки

3- stackview - ведущий, конечный, сверху до среднего, снизу для просмотра

Согласно приведенному выше, высота middleView будет соответствовать высоте экрана, если вы хотите, чтобы он был квадратным, замените ведущую и конечную точку на centerX и аспектное отношение 1.

person Sh_Khan    schedule 18.07.2019
comment
Label + middleView находятся в собственном стеке. Вы говорите, что я тоже должен отказаться от этого, верно? - person Isuru; 18.07.2019
comment
Пробовал. Однако все 3 кнопки перепутались. См. ограничения и результат. - person Isuru; 18.07.2019
comment
Я удалил ограничения по высоте кнопок и установил для них одинаковую высоту. На больших экранах это выглядит как this, а на маленьких экранах это выглядит как this. Есть ли способ установить ограничение минимальной высоты для кнопок? Чтобы на экранах большего размера у них была высота 40, а на телефонах меньшего размера они уменьшились до минимальной высоты? - person Isuru; 18.07.2019