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

В режиме автоопределения, как я могу просматривать изображение на половине экрана, независимо от ориентации?

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

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

Почему это происходит? Как я могу просматривать представления только в половине экрана относительно их ширины, независимо от ориентации экрана?

4b9b3361

Ответ 1

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

Шаг 1:

enter image description here

Настройте синие ограничения автоматической компоновки, как показано на рисунке. Вверху, слева, внизу 0 до супервизора. Справа от 0 до красного.

Шаг 2:

enter image description here

Настройте те же, но зеркальные, ограничения для красного представления.

Если вы выполнили первые два шага правильно, у вас должны быть ошибки и предупреждения автоматической компоновки:

enter image description here

Нам нужно еще одно ограничение для исправления этих ошибок/предупреждений и получения того, что нам нужно.

Шаг 3:

enter image description here

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

Чтобы добавить эти ограничения в код с помощью VFL, нам понадобятся следующие ограничения:

@"H:|[blueView(==redView)][redView]|"
@"V:|[blueView]|"
@"V:|[redView]|"

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

Шаг 1:

enter image description here

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

Шаг 2:

enter image description here

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

enter image description here

На этом этапе у нас есть предупреждение о автоматической компоновке. Автомакет хочет, чтобы наш кадр соответствовал его ширине. Нажав на предупреждение и выбрав "Ограничения обновления", введите значение hardcoded. Мы не хотим этого.

Шаг 3:

enter image description here

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

Нажмите "Изменить" рядом с ограничением "Равная ширина:". Нам нужно изменить значение множителя.

enter image description here

Нам нужно изменить значение множителя на 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]; 

Ответ 2

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

Ответ 3

Создайте UIView в XIB или Storyboard

  • Установить верхние и левые ограничения
  • Установить ограничение по высоте
  • Установите ограничение ширины равным ширине супер-представления * Важно
  • Изменить ширину ограничения путем преобразования его в десятичный

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

  1. Установите десятичную ширину в нужную вам ширину (в моем случае 0,5 или половину)

Результат

Ответ 4

Система ограничений не может читать ваши мысли. Вы должны сказать, чего хотите. Половина половины. Если вы хотите половину, скажите половину. Чтобы сделать половину ширины своего супервизора, дайте ему ограничение ширины, которое имеет множитель .5 по отношению к его ширине супервизора.