iOS 9.0 поставляется с UIStackView, что упрощает просмотр макетов по размеру их содержимого. Например, чтобы разместить 3 кнопки в строке в соответствии с их шириной содержимого, вы можете просто вставить их в представление стека, установить горизонтальную ось и распределение - заполнить пропорционально.
Вопрос заключается в том, как добиться того же результата в более старых версиях iOS, где представление стека не поддерживается.
Одно из решений, которое я придумал, является грубым и выглядит не очень хорошо. Опять же, вы помещаете 3 кнопки подряд и привязываете их к ближайшим соседям с использованием ограничений. После этого вы, очевидно, увидите ошибку двусмысленности приоритета контента, потому что система автоматического макета не имеет понятия, какая кнопка должна расти/сокращаться перед другими.
К сожалению, заголовки неизвестны до запуска приложения, поэтому вы можете произвольно выбрать кнопку. Скажем, я уменьшил горизонтальный контент, обнимающий приоритет средней кнопки от стандартных 250 до 249. Теперь он будет расти раньше других двух. Еще одна проблема заключается в том, что левая и правая кнопки строго сокращаются до их ширины содержимого без каких-либо красиво выглядящих paddings, как в версии Stack View.