Как работает автоматический расчёт высоты ячеек в UITableView?

«Как работает автоматический расчёт высоты ячеек в UITableView?» — вопрос из категории UIKit, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Автоматический расчёт высоты включается установкой UITableView.automaticDimension для свойств rowHeight и/или estimatedRowHeight.

Базовая настройка:

tableView.rowHeight = UITableView.automaticDimension
tableView.estimatedRowHeight = 80 // Приблизительная высота для оптимизации

Требования к autolayout в ячейке:

  1. Констрейнты должны полностью определять размер содержимого от верха до низа ячейки.
  2. Для многострочных UILabel установите:
    label.numberOfLines = 0
    label.setContentCompressionResistancePriority(.required, for: .vertical)

Принцип работы и оптимизация:

  • Система использует estimatedRowHeight для предварительного вычисления размера таблицы и оптимизации прокрутки.
  • Фактический расчёт (systemLayoutSizeFitting) происходит для видимых ячеек.
  • Для сложных ячеек кешируйте рассчитанную высоту в tableView(_:heightForRowAt:), чтобы избежать повторных вычислений.