Подтвердить что ты не робот

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

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

Custom View

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

Также убедитесь, что вы установили свойство Hugging содержимого на 1000.

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