Задать вопрос
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 не получится, потому что это вью контролера.
  • Вопрос задан
  • 42 просмотра
Подписаться 1 Сложный 3 комментария
Решения вопроса 1
ivanvorobei
@ivanvorobei Автор вопроса
iOS разработчик, канал https://t.me/sparrowcode
Чтобы сделать это на фрейма, нужно:

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

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

Похожие вопросы