Подтвердить что ты не робот

Автомасштабирование в малом пространстве (программно)

Как добавить ограничения Auto Layout программно, чтобы центрировать представление в оставшемся пространстве (см. пример ниже)?

enter image description here

На данный момент я добавляю контейнерный снизу внизу, а затем центрирую представление в представлении контейнера, но мне было интересно, есть ли какое-либо другое решение, не нужно использовать представление контейнера.

4b9b3361

Ответ 1

Для этого вам нужно добавить спейсер.

Начнем с некоторых представлений:

some views

Я настрою розовое представление, чтобы занять верхние 70% корневого представления. Сначала я привязываю его ко всем четырем краям корневого представления:

pink constraints

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

pink constraints adjusted

Далее я добавлю спейсер. Я не хочу, чтобы проставка была видна во время выполнения, поэтому я сделаю ее скрытой. Скрытые виды все еще участвуют в макете. Перед установкой ограничений я просто поместил проставку слева от синего представления:

spacer added

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

spacer constraints

Теперь я готов настроить синий вид. Сначала я дам ему фиксированный размер:

blue size constraints

Во-вторых, я сосредоточу его горизонтально в корневом представлении:

blue horizontal center

В-третьих, я привяжу его вертикальный центр к вертикальному центру проставки:

blue vertical center

Чтобы все необходимые мне ограничения. Я обновлю все фреймы, чтобы проверить:

update all frames

Я могу проверить его, используя Preview в помощнике редактора:

previews

Обратите внимание, что представление проставки не отображается в предварительном просмотре, но все равно участвует в компоновке.