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

Как запретить построителю интерфейса добавлять 20-процентное дополнение к содержимому subview?

IB, stop adding that padding!

Посмотрите, что 20px (pt довольно) отступов? IB делает это автоматически в двух случаях, когда вы нажимаете Cmd + =, чтобы авторизовать супервизор, чтобы соответствовать содержимому subview, и когда вы выбираете Editor > Embed In > UIView, UIScrollView etc..

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

Также с опцией Embed In IB сдвигает позиционирование новой обертки супервизора на (-20, -20), как будто это делает ее лучше...

Я что-то упустил? Есть ли способ предотвратить это дополнение?

4b9b3361

Ответ 1

Я наконец понял, как это сделать, связанный с этим ответом:

Групповые представления в Interface Builder

  • Выберите все виды, которые вы хотите внедрить (с помощью сдвига или нажатия команды на них).
  • Редактор- > Вставить In- > View. Это создает представление "A" с избыточным заполнением 20 пикселей.
  • Создайте новый вид "B" с фактическими границами, которые вы хотите (таким образом, на 20 пикселей меньше, чем "A" со всех сторон).
  • Перетащите старый вид контейнера "A" в новый вид контейнера "B" (Xcode центрирует его для вас в пределах "B", сохраняя текущие местоположения всех дочерних элементов).
  • Нажмите на старый вид контейнера "A" и перейдите в редактор- > Unembed.

Теперь ваши дочерние элементы правильно размещены в представлении "B", и нет отступов 20 пикселей.

Протестировано в Xcode 4.5.

P.S. этот метод может быть особенно полезен, когда вы хотите иметь боковую панель и поддерживать как 3,5-дюймовые, так и 4-дюймовые дисплеи. Вы можете указать боковую панель и основной вид соответствующей авторазделения, а затем масштабировать подзоны по отношению к ним. У меня возникли проблемы с получением взглядов GLKit, чтобы уважать правила автосохранения, поэтому я настраивал обычные представления и встраивал в них взгляды GLKKit со всеми включенными красными автозапусками:

Неверный размер фрейма и размер рамки вложенного изображения GLKView

Ответ 2

Все, что вам нужно сделать, по крайней мере в Xcode 7.2, дает Container Просмотр следующих ограничений

Trailing Space to Superview = -20

Leading Space to Superview = -20

Ответ 3

Это то, что сработало для меня на Xcode 9. Обратите внимание, что таким образом вы потеряете ограничения верхнего представления, которое вы встраиваете. Итак, чтобы вставить один вид в другой:

  • Создайте еще один пустой вид на том же уровне, что и представление, которое вы собираетесь внедрить.
  • Расположите новое представление правильно и добавьте к нему ограничения. SuperView. Я думаю, что в большинстве случаев вы хотите дублировать то же самое ограничения, как у вас есть из существующего представления в супервизор.
  • Затем выберите представление, которое необходимо вставить, и перетащите его под новый вид. Теперь у вас есть свой взгляд, встроенный в новое представление. То, что вам также нужно, - добавить 0 граничных ограничений из встроенного представления к новому виду.

Что это.