Ответ 1
UPDATE
Этот ответ описывает, как это сделать в Xcode 6.0 (и, вероятно, работает в Xcode 5.0 и 5.1).
ORIGINAL
Если вы хотите сделать это с помощью автоматического макета, вам нужно добавить хотя бы один спейсер. Это не должно быть просмотр вертикально-центрированного представления (или любого другого представления), поэтому он довольно незначительно влияет на вашу иерархию представлений.
Я рекомендую не пытаться установить ограничения в Interface Builder в Xcode 4.6.3. Это просто больно. Но если вам действительно нужно, это выполнимо.
-
Создайте спейсер (простой старый
UIView
) с нижнего края верхнего обнимающего представления до нижнего края супервизора. Установите его в скрытое. Дайте ему ограничения на верхнее обнимающее представление, а также на левый и нижний края корневого представления и наведите его ширину. Моя ширина разделителя составляет 10: -
Добавьте свой средний вид (здесь, кнопка). Дайте ему ограничение "Горизонтальный центр в контейнере". Затем выберите средний вид и вид спейсера и дайте им ограничение "Вертикальные центры":
Обратите внимание, что если вы отбрасываете средний вид, когда IB показывает правильные рекомендации, он будет устанавливать эти ограничения для вас.
Вы можете протестировать, разрешив изменение размера для потомков (но не братьев и сестер и предков) и изменив размер корневого представления в IB. Средний вид будет оставаться центрированным между верхним обнимающим видом и нижней частью супервизора: