Ответ 1
Первая половина ответа касается случая, когда мы хотим разделить вид равномерно между представлением A (синий) и представлением B (красный). Во второй половине будет рассмотрен случай, когда мы хотим, чтобы представление A занимало половину экрана, но вид B не существует.
Шаг 1:
Настройте синие ограничения автоматической компоновки, как показано на рисунке. Вверху, слева, внизу 0 до супервизора. Справа от 0 до красного.
Шаг 2:
Настройте те же, но зеркальные, ограничения для красного представления.
Если вы выполнили первые два шага правильно, у вас должны быть ошибки и предупреждения автоматической компоновки:
Нам нужно еще одно ограничение для исправления этих ошибок/предупреждений и получения того, что нам нужно.
Шаг 3:
Удерживайте управление, щелкните и перетащите его из одного представления в другое и выберите "равные ширины". Теперь наши представления всегда будут иметь одинаковую ширину. Все наши предупреждения и ошибки автоматического макета исчезают, и наши представления всегда будут на половину экрана независимо от ориентации или устройства.
Чтобы добавить эти ограничения в код с помощью VFL, нам понадобятся следующие ограничения:
@"H:|[blueView(==redView)][redView]|"
@"V:|[blueView]|"
@"V:|[redView]|"
Теперь предположим случай, когда мы хотим, чтобы один вид занимал половину экрана, но у нас нет другой точки зрения. Мы все еще можем сделать это с автоматической компоновкой, но это немного отличается. В этом примере наше представление голубое, а его родительское представление зеленое.
Шаг 1:
Это похоже на шаг 1 выше, за исключением того, что мы не добавляем ограничение правой стороны (это, очевидно, будет меняться, если мы хотим, чтобы наше представление занимало другую половину).
Шаг 2:
Как и раньше, мы хотим назначить ограничение "равной ширины". В этом случае, с нашего взгляда на родительское представление. Опять же, удерживайте управление и перетаскивайте мышью один на другой.
На этом этапе у нас есть предупреждение о автоматической компоновке. Автомакет хочет, чтобы наш кадр соответствовал его ширине. Нажав на предупреждение и выбрав "Ограничения обновления", введите значение hardcoded. Мы не хотим этого.
Шаг 3:
Выберите представление и перейдите к его инспектору размера. Здесь мы сможем отредактировать ограничения.
Нажмите "Изменить" рядом с ограничением "Равная ширина:". Нам нужно изменить значение множителя.
Нам нужно изменить значение множителя на 2.
Теперь ограничение меняется на "Пропорциональная ширина до:", и все наши предупреждения и ошибки автоматического макета исчезают. Теперь наш взгляд всегда будет занимать ровно половину супер-представления.
Чтобы добавить эти ограничения в код, мы можем добавить некоторые из них с помощью VFL:
@"H:|[blueView]"
@"V:|[blueView]|"
Но ограничение пропорциональной ширины не может быть добавлено с помощью VFL. Мы должны добавить это как таковое:
NSLayoutConstraint *constraint =
[NSLayoutConstraint constraintWithItem:blueView
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:superView
attribute:NSLayoutAttributeWidth
multiplier:2.0
constant:0.0];