ШУКАЙТЕ, НЕ СПАСЕРІВ!
На основі пропозицій у розділі коментарів моєї оригінальної відповіді, особливо корисних пропозицій @ Rivera, я спростив свою оригінальну відповідь.
Я використовую gifs, щоб проілюструвати, наскільки це просто. Сподіваюсь, ви знайдете корисні графічні файли. На всякий випадок, якщо у вас є проблеми з gifs, я включив стару відповідь нижче звичайними знімками екрана.
Інструкції:
1) Додайте свої кнопки або мітки. Я використовую 3 кнопки.
2) Додайте до контрольного огляду центральне обмеження x від кожної кнопки:
3) Додайте обмеження від кожної кнопки до нижнього обмеження макета:
4) Відрегулюйте обмеження, додане в №3 вище, наступним чином:
а) виберіть обмеження;
б) вилучіть константу (встановлено 0),
в) змініть множник так: візьміть кількість кнопок + 1 і, починаючи вгорі, встановіть множник як кнопкуCountPlus1: 1 , а потім кнопкуCountPlus1 : 2 , і нарешті кнопкаCountPlus1: 3 . (Я пояснюю, звідки я взяв цю формулу в старій відповіді нижче, якщо вас цікавить).
5) Ось демонстрація працює!
Примітка: Якщо ваші кнопки мають більшу висоту, вам потрібно буде компенсувати це в постійному значенні, оскільки обмеження знаходиться внизу кнопки.
Стара відповідь
Незважаючи на те, що кажуть документи Apple і чудова книга Еріки Садун ( Auto Layout Demystified ), можна рівномірно проглядати місця без пробілів . Це дуже просто зробити в IB та в коді для будь-якої кількості елементів, які ви хочете розподілити рівномірно. Все, що вам потрібно, - це математична формула, яка називається "формула розділу". Це зробити простіше, ніж пояснити. Я зроблю все можливе, демонструючи це в IB, але це так само просто зробити в коді.
У відповідному прикладі ви б
1) почніть з встановлення кожної мітки для обмеження в центрі. Це зробити дуже просто. Просто керуйте перетягуванням від кожної мітки донизу.
2) Утримуйте зсув, оскільки ви також можете додати інше обмеження, яке ми будемо використовувати, а саме "посібник з макету від нижнього простору до низу".
3) Виберіть "посібник з макету від нижнього місця до низу" та "горизонтальний центр по контейнеру". Зробіть це для всіх 3-х міток.
В основному, якщо ми беремо мітку, координату якої ми хочемо визначити, і розділимо її на загальну кількість міток плюс 1, то у нас є число, яке ми можемо додати до IB, щоб отримати динамічне розташування. Я спрощую формулу, але ви можете використовувати її для встановлення горизонтального проміжку або одночасно і вертикального, і горизонтального. Це супер потужно!
Ось наші множники.
Мітка1 = 1/4 = .25,
Мітка2 = 2/4 = .5,
Мітка3 = 3/4 = .75
(Редагувати: @Rivera прокоментував, що ви можете просто використовувати коефіцієнти безпосередньо в полі множника, а xCode з робити математику!)
4) Отже, виберемо Label1 і виберемо нижнє обмеження. Подобається це:
5) Виберіть "Другий елемент" у Ревізорі атрибутів.
6) З випадаючого списку виберіть "Зворотний перший і другий елемент".
7) Нульова константа і значення wC hAny. (Ви можете додати сюди зміщення, якщо воно знадобиться).
8) Це найважливіша частина. У поле множника додаємо наш перший множник 0,25.
9) Поки ви знаходитесь на ньому, встановіть верхній "Перший елемент" на "ЦентрY", оскільки ми хочемо відцентрувати його до центру y мітки. Ось як все це має виглядати.
10) Повторіть цей процес для кожної мітки та підключіть відповідний множник: 0,5 для Label2 та 0,75 для Label3. Ось кінцевий продукт у всіх напрямках із усіма компактними пристроями! Супер просто. Я розглядав безліч рішень, що стосуються коду і пробілів коду. Це далеко не найкраще рішення, яке я бачив у цьому питанні.
Оновлення: @kraftydevil додає, що керівництво по макеті знизу відображається лише на сценаріях, а не в xibs. Використовуйте "Простір у нижній частині контейнера" у xibs. Гарний улов!