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

<p>может ли кто-нибудь помочь мне понять разницу между «конечным пространством к контейнеру» и «нижним пространством к нижнему макету» в автоматическом макете компоновщика интерфейса? </p><p><img src="https://i.stack.imgur.com/fsdhn.png" alt="interface builder auto layout constraints"></p><p>я хотел бы установить ограничение макета, связывающее нижнюю часть представления с нижней частью его суперпредставления. оба вышеперечисленных звучат так, как будто они должны выполнить это. </p><p>любые разъяснения будут с благодарностью. </p>

<p>ведущий/тянущийся - горизонтальный интервал. (он не помечен как «левый» и «правый», потому что он меняет язык справа налево.) верх/низ - именно то, что написано.</p><p>«контейнер» и «руководство по макету» определены по-разному, но на практике работают аналогично. ограничения «в контейнер» управляют пространством между элементом пользовательского интерфейса и краем его суперпредставления (или другого содержащего элемент пользовательского интерфейса). ограничения «to layout guide» являются особым случаем для вертикального интервала - поскольку представления расширяются под прозрачными панелями навигации/состояния/вкладок в ios 7, вы, как правило, хотите контролировать, где элемент пользовательского интерфейса отображается относительно элементов вместо краев посмотреть.</p><p>так... </p><blockquote> <p>я хотел бы установить ограничение макета, связывающее нижнюю часть представления с нижней частью его суперпредставления.</p> </blockquote><p>«руководство по планировке от нижнего пространства к нижнему» - это то, что вам нужно для этого. это установит интервал относительно нижней части суперпредставления, если нет панели вкладок, и относительно панели вкладок, если таковая существует.</p>

<p>не забудьте снять отметку «относительно маржи» <img src="https://i.stack.imgur.com/4xhhk.png" alt="enter image description here"></p>

<p>трейлинг-пространство</p><blockquote> <p>пробел от правого края текущего вида до следующего/соседнего вида или суперпредставления</p> </blockquote><p>ведущее пространство</p><blockquote> <p>пространство от соседнего вида или суперпредставления до левого края текущего вида</p> </blockquote><p>точно так же верх и низ соответствуют верхнему и нижнему пространству. </p>

<p>чтобы добавить к уже принятому ответу, также стоит отметить, что если вы заменяете представление в контроллере представления другим, я обнаружил, что любые ограничения для направляющих макета фактически не используются. я не изучал точные детали этого, но я предполагаю, что это потому, что руководства по макету доступны только во время загрузки view controller из раскадровки.</p><p>по этой причине я рекомендую использовать макет для контейнера, но только в том случае, если вы хотите поменять местами представления контроллера представления. </p><p>я столкнулся с этим, когда хотел использовать раскадровку для создания пустых состояний для моих приложений.</p><p>пример:</p><p><code>-(void)viewdidload{ uiview* replacementview = //view loaded from storyboard self.view = replacementview //layout guide margins will not be followed in replacement view } </code></p>