#swift #uikit #swift5 #uistackview #cgrect
#быстрый #уикит #swift5 #uistackview #cgrect
Вопрос:
let innerView = UIView(frame: .init(x: 0, y: 0, width: 50, height: 50)) let outerSV = UIStackView(arrangedSubviews: [innerView]) outerSV.frame.width // still 0! should be 50 outerSV.frame.height // still 0! should be 50
Итак, вопрос в следующем: как обновить размер StackView после добавления вложенных представлений?
Ответ №1:
Вы должны вызвать sizeToFit()
и layoutIfNeeded()
на подвидах стекового представления. Ограничьте представление Uistack, как обычно, и ограничьте вложенные представления, как обычно.
Кроме того, вам нужно настроить его на пропорциональное заполнение, и он будет изменяться в соответствии с новым контентом.
И убедитесь, что у вас нет нижнего ограничения высоты в представлении стека. Вам понадобятся только левые, правые и верхние ограничения.
Комментарии:
1. Все звучит разумно, но это не работает. Я также вызвал функции sizeToFit() и layoutIfNeeded (). Но я вызвал его на StackView. Все равно не работает.
2. @Roman Не могли бы вы показать свои настройки ограничений ?
3. У меня нет никаких ограничений. Весь код находится в вопросе 🙂
4. Вы должны поместить верхние, ведущие и конечные ограничения в StackView, чтобы это работало правильно
5. Но я не хочу, чтобы этот вид стека где-либо отображался. Я не буду показывать его пользователю. Моя цель состоит в том, чтобы программно построить StackView, заполнить его вложенными представлениями и сделать «снимок» этой дыры (UIImageView). И я могу это сделать, если сам установлю размер стекового представления вручную. Но я хочу, чтобы он определял размер по подвидам!