Автоматическая компоновка раскадровки: "конечное пространство для контейнера" и "нижнее пространство до нижней макета"
Может ли кто-нибудь помочь мне понять разницу между "конечным пространством в контейнере" и "нижним пространством в нижней макете" в автоматическом мастере компоновщика интерфейса?
![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
}