Изменения макета UIViewController - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть UIViewController, который имеет 4 подпредставления - вид слева, вид справа, вид снизу и вид в центре.Центральный вид фактически встраивает другой контроллер вида (AVPlayerViewController).При нажатии кнопки я хочу изменить вид слева и вид снизу и изменить размер вида по центру.В этот раз центральное представление также будет иметь другое ведущее ограничение, поскольку левое представление, к которому оно было подключено ранее, больше не существует.

Какой самый простой способ сделать это с помощью Autolayout и раскадровок?Есть ли способ в раскадровке определить два дизайна одного и того же UIViewController и изменить состояния, все с анимацией?

Ответы [ 2 ]

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

Есть несколько способов сделать это.Выберите способ, который подходит вам лучше всего

  1. Вы можете использовать два контейнера просмотров.за один раз один будет скрыт, а другой будет показан.Создайте отдельный дизайн в контроллере встраивания для каждого представления контейнера

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


Вы можете использовать два UIView's .за один раз один будет скрыт, а другой будет показан.Сделайте отдельные дизайны для каждого представления в раскадровке.Для проектирования установите альфа от 0 до 0. Таким образом, вы можете создать другое представление

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


Манипулировать ограничениями в коде с анимацией.Разработайте и установите ограничения.Затем создайте выходы ограничений и измените yourConstraint.constant ИЛИ yourConstraint.anchor
0 голосов
/ 25 сентября 2018

Практически лучший способ добиться этого - манипулировать ограничениями в коде,

Раскадровка объявляет UIViews визуально только с начальным состоянием.

Поскольку вы не можете дать 2 дизайна для одного и того же UIViewController, но вы точно можете управлять его состоянием.

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

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

Как:

Просто перетащите @IBOutlet ограничения в класс UIViewController из UIStoryBoard, и вы можете настроить его свойства, напримеркак .constant и .firstAnchor.

быстрый ответ: нет, вы не можете иметь 2 дизайна для одного и того же UIViewController в раскадровке

...