Обновление: У меня есть лучшее решение, которое не использует проставки. Проверьте это here.
Хорошо, это может быть достигнуто очень быстро в IB. Это так просто. Вот диаграмма, которая поможет проиллюстрировать. ![enter image description here](https://i.stack.imgur.com/kIbAI.png)
Предположите, что v1-6 - ваши кнопки, а s1-5 - ваши распорки. 1) в режиме управления IB перетащите все соединения, обозначенные красными линиями.
2) shift click v1-6 и значок булавки (выглядит как | -I- |) задает ширину и высоту определенному значению. также установите высоту и ширину равными.
3) сдвиг выберите s1-4 (не 5) и установите высоту равной. не дают ему определенной высоты, так как это должно быть рассчитано системой. вам также может потребоваться установить ширину s1-4 равным, но не дать им определенную ширину.
4) перетащите элемент управления из центра на передний и задний фронт и установите центральное ограничение.
Итак, вы можете подумать, хорошо, это должно работать сейчас. Это не так. Вот мое приложение, работающее на портрете с немного разными цветами. Выглядит неплохо. (Обратите внимание, что вы сделаете проставки невидимыми после установки).
![enter image description here](https://i.stack.imgur.com/IITHU.png)
Но когда я поворачиваю, упс!
![enter image description here](https://i.stack.imgur.com/VrWpu.png)
Что здесь происходит? Проблема невероятно легко решить, когда мы поймем, что пошло не так. Мы хотим, чтобы IB не сокращала наши взгляды. Мы хотим, чтобы IB делала прокладки и пространства для сокращения и роста по мере необходимости, но чтобы оставить наши взгляды в покое. В основном, IB сократил прокладки вниз, насколько это возможно, в портрете и попытаться сделать все, что соответствует IB, сократило наши взгляды. Но мы хотели, чтобы IB сокращала вертикальные пространства между видами и променами, а не наши взгляды. Решение так просто. Все, что нам нужно сделать, это настроить приоритет вертикальных пространств, и все хорошо. Итак, выберите вертикальные пространства в IB и установите приоритет на 750. Линии вертикального интервала будут отображаться как пунктирные. Готово.
![enter image description here](https://i.stack.imgur.com/WQfFe.png)
![enter image description here](https://i.stack.imgur.com/0KGOx.png)
Ok, так что здесь все, как мы ожидали.
![enter image description here](https://i.stack.imgur.com/V2Sa2.png)
И с распорками дали понять:
![enter image description here](https://i.stack.imgur.com/T8049.png)
![enter image description here](https://i.stack.imgur.com/OWi6K.png)
Я думаю, что это возможно в IB. Даже жестко я делаю все свои макеты в коде. Xcode не обрабатывает xibs хорошо. – dasdom
Но - как вы устанавливаете ширину = ограничение по высоте и задаете для всех кнопок одинаковые значения? – kender
[myView addConstraint: [Ограничение NSLayoutConstraint constraintWithItem: button: NSLayoutAttributeWidth relatedBy: NSLayoutRelationEqual toItem: атрибут кнопки: NSLayoutAttributeHeight multiplier: 1.0f constant: 0.0f]]; – dasdom