Как изменить размер родительского представления в зависимости от размера подзаголовков, созданных с помощью Autolayout
Я готовлю пользовательский вид, который похож на пример, показанный на скриншоте. Я добавляю все компоненты пользовательского интерфейса (метки, текстовые поля, переключатели и т.д.) Во время выполнения. Для размещения элементов я использую Autolayout. Эта часть работает до сих пор.
![Custom View]()
Количество элементов варьируется от контекста к контексту. Интересно, как я могу использовать ограничения Autolayout для динамически изменять размер родительского представления (скорее всего, высота представления). Таким образом, ограничения представления должны учитывать высоты и поля, определенные для подключенных в настоящее время подзонов.
Ответы
Ответ 1
Я сделал это со следующей настройкой:
- в представлении контейнера нет ограничения по высоте
- верхнее подвью имеет ограничение расстояния от верхней части представления контейнера
- у всех содержащихся представлений есть ограничения между ними
- вид снизу имеет ограничение расстояния до нижней части представления контейнера
Система автоматического макета удовлетворяет этим ограничениям, изменяя размер контейнера в соответствии с его содержимым.
Конечно, вам нужно динамически устанавливать ограничения при изменении содержимого.
Ответ 2
Если вы используете NSStackView, убедитесь, что вы не устанавливаете ограничение для его высоты и ширины и убедитесь, что все стороны закреплены.
![введите описание изображения здесь]()
Также убедитесь, что вы установили свойство Hugging содержимого на 1000.
![введите описание изображения здесь]()