Общий подход к руководству по нижней компоновке и различным форматам экрана

До сих пор большинство, если не все, экраны, которые я разработал, имели 2 типа поведения в контексте руководства по нижней компоновке:

  1. Содержимое статично и должно быть закреплено внизу:

    В этом случае обычно я создаю направляющую нижнего макета от самого нижнего подвида vc до его суперпредставления (корневой вид vc вместо нижней безопасной области vc). И это работает в обоих случаях, если цвет фона выровненного по низу представления и корневого/родительского представления на краю iphoneX одинаков.

    Нижняя направляющая Люута

  2. содержимое прокручивается или должно «переполняться», или цвет фона нижнего подвида и vc различается. Например, нижняя кнопка или панель вкладок должны быть выровнены по безопасной области, но их фон должен «продолжаться» в iPhoneX до небезопасной области.

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

В свете этого, знает ли кто-нибудь о какой-либо технике для обобщения/упрощения 2-го пункта? Если вы находите это действительно уродливым, нужно добавлять проверки, зависящие от устройства, почти для каждого контроллера представления.

Технически это происходит уже с «автоматической настройкой вставок краев контроллера представления», но только для прокрутки/просмотра таблиц.

TLDR; Можно ли позволить просмотру «растягиваться» до небезопасной области в iphoneX? Чтобы получить в основном такое же поведение панели навигации, но для нижней части экрана, без жесткого кодирования чего-либо?

Плюс: если можно обобщить, включая 1-е разыскиваемое поведение с флагом или подобным.


person jalone    schedule 14.11.2019    source источник


Ответы (1)


Как я обычно это делаю:

  • Установите нижнее ограничение, как вы опубликовали
  • Установите верхнее ограничение относительно нижней безопасной области (вместо супервида) со смещением для высоты, которой вы хотите, чтобы вид был.

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

person ZachNag    schedule 14.11.2019
comment
Как я об этом не подумал! Благодарю вас! - person jalone; 15.11.2019