Как изменить размер родительского представления в зависимости от размера вложенных представлений, размеченных с помощью Autolayout

Я готовлю собственное представление, которое похоже на пример, показанный на скриншоте. Я добавляю все компоненты пользовательского интерфейса (метки, текстовые поля, переключатели,...) во время выполнения. Для позиционирования элементов я использую ограничения Autolayout. Эта часть отлично работает до сих пор.

Пользовательский вид

Количество элементов варьируется от контекста к контексту. Интересно, как я мог бы использовать ограничения Autolayout для динамического изменения размера родительского представления (скорее всего, высоты представления). Поэтому ограничения вида должны учитывать высоту и поля, определенные для прикрепленных в настоящее время подпредставлений.

2 ответа

Я сделал это с помощью следующей настройки:

  • вид контейнера не имеет ограничений по высоте
  • верхнее подпредставление имеет ограничение расстояния от вершины контейнера
  • все содержащиеся представления имеют пространственные ограничения между ними
  • вид снизу имеет ограничение по расстоянию до нижней части вида контейнера

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

Конечно, вам нужно динамически устанавливать ограничения при изменении содержимого.

Если вы используете NSStackView, убедитесь, что вы не установили ограничение для его высоты и ширины, и убедитесь, что все стороны закреплены.

введите описание изображения здесь

Также убедитесь, что для свойства content Hugging установлено значение 1000.

введите описание изображения здесь

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