Вопрос проверяет знание Auto Layout, self-sizing ячеек и типичных ошибок при работе с динамической высотой.
Динамическая высота ячеек реализуется с помощью Auto Layout. Таблица сама вычисляет высоту на основе constraints. Для этого используется automaticDimension. Важно, чтобы все элементы внутри ячейки имели корректные ограничения. Ошибки в constraints приводят к неправильным размерам или лагам.
Динамическая высота ячеек позволяет UI адаптироваться под контент без ручных расчетов.
UITableView может автоматически вычислять высоту ячейки, если:
внутри ячейки используется Auto Layout
все вертикальные constraints заданы корректно
tableView.rowHeight = UITableView.automaticDimension
tableView.estimatedRowHeight = 100
estimatedRowHeight нужен для более плавного скролла и расчета контента.
Полная вертикальная цепочка constraints
Должны быть заданы:
верхний constraint
нижний constraint
между элементами и contentView.
Отсутствие неоднозначных ограничений
Auto Layout должен однозначно вычислять высоту.
Корректная работа с multiline-текстом
Для UILabel:
numberOfLines = 0
корректные constraints по ширине
Пропущенный bottom constraint
Использование frame вместо Auto Layout
Слишком маленький estimatedRowHeight
Пересоздание constraints при каждом скролле
Динамическая высота ячеек работает стабильно, если Auto Layout настроен корректно и ячейка полностью описывает свою вертикальную структуру.