ivanvorobei
@ivanvorobei
iOS разработчик, канал https://t.me/sparrowcode

Как сделать self sizing для view дочернего контроллера?

В контроллер-родитель добавлю дочерний контроллер, добавлю вью дочернего.

addChild(childController)
view.addSubview(childController.view)
childController.didMove(toParent: self)


Размер дочернего контроллера зависит от контента в нем. Родитель не знает о контенте в дочернем.
Как сделать лейаут чтобы для определённой ширины контента менялась высота дочернего контроллера?

С auto layout работает из коробки, на фреймах реализацию не нашел.

P.S. Переопределись sizeThatFit не получится, потому что это вью контролера.
  • Вопрос задан
  • 41 просмотр
Решения вопроса 1
ivanvorobei
@ivanvorobei Автор вопроса
iOS разработчик, канал https://t.me/sparrowcode
Чтобы сделать это на фрейма, нужно:

  1. в конце пересчета размеров установить в дочернем
    preferredContentSize
  2. При установке размера вызовется метод у родителя preferredContentSizeDidChange
  3. В вызове метода пересчитать лейаут в родителе, зная нужную высоту ребенка. Цикла вызовов не будет, нотификация не вызывается если размер совпадает.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы