AutoLayout: как ограничить UIView не выше, чем высота, необходимая для размещения всех его подпредставлений?

Есть несколько ответов на SO, которые, кажется, касаются одного и того же вопроса, такого как этот. Однако ничего из этого не сработало.

Цель состоит в том, чтобы использовать AutoLayout и раскадровку для создания UIView, назовите его parentView, это достаточно высокий, чтобы содержать его подпредставления и не выше.

Это легко сделать в коде, но цель состоит в том, чтобы сделать все это в Storyboard с ограничениями AutoLayout и без указания статической высоты (например, предположим, что одно из подпредставлений является UILabel, так parentView будет расти соответственно, если высота UILabel увеличивается из-за длинного текста).

Это возможно?

1 ответ

Решение

На самом деле это можно сделать не с добавлением ограничений, а с их отсутствием!

Перетащите новый View в суперпредставление и задайте ему два ограничения: Center X и Center Y. Перетащите несколько представлений / меток и добавьте их в View,

Для того, чтобы это работало, подпредставления внутри должны иметь ограничения на ведущий / трейлинг / верх / низ View скрепляя все вместе Это "определяет" ограничения для View's ширина и высота, чтобы XCode не злился на вас.

Вот и все. Пример проекта.

Изменить: изображение вида и ограничений

Другие вопросы по тегам