Автоматическая компоновка раскадровки: "конечное пространство для контейнера" и "нижнее пространство до нижней макета"

Может ли кто-нибудь помочь мне понять разницу между "конечным пространством в контейнере" и "нижним пространством в нижней макете" в автоматическом мастере компоновщика интерфейса?

Interface Builder Auto Layout Constraints

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

Любые разъяснения были бы весьма признательны.

Ответы

Ответ 1

Ведущее/конечное - горизонтальное расстояние. (Он не помечен как "left" и "right", потому что он меняет местами для языков справа налево.) Top/bottom - это именно то, что он говорит.

"Контейнер" и "Руководство по макету" определяются по-разному, но работают аналогично на практике. Ограничения "To Container" управляют пространством между элементом пользовательского интерфейса и краем его супервизора (или другого элемента UI). Ограничения "Макет Руководство" являются особым случаем для вертикального интервала - поскольку представления расширяются под прозрачными навигационными/статусами/вкладками в iOS 7, вы обычно хотите контролировать, где элемент пользовательского интерфейса отображается относительно них, а не к краю вид.

Итак...

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

"Руководство по нижнему пространству до нижнего макета" - это то, что вы хотите для этого. Это установит интервал относительно нижней части супервизора, если нет панели вкладок и относительно панели вкладок, если таковая существует.

Ответ 2

Трейлинг пространства

Пробел от правого края текущего вида до следующего/соседнего вида или супервизора

Ведущее пространство

Пробел из соседнего вида или супервизора в левый край текущего вида

Точно так же Top и Bottom соответствуют верхнему и нижнему пространству.

Ответ 3

Не забудьте снять флажок "Относительно поля" enter image description here

Ответ 4

Чтобы добавить к уже принятому ответу, стоит также отметить, что если вы заменяете представление в контроллере представления другим, я обнаружил, что любые ограничения для направляющих макета фактически не используются. Я не рассматривал точные детали этого, но я предполагаю, что руководство по макету доступно только в то время, когда View Controller загружается из раскадровки.

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

Мне это показалось, когда я хотел использовать раскадровку для создания пустых состояний для своих приложений.

Пример:

-(void)viewDidLoad{ UIView* replacementView = //view loaded from storyboard self.view = replacementView //Layout guide margins will not be followed in replacement view }