Изменение размера UITableView для соответствия содержимому на ios 11
Учитывая нежелательный contentSize в UITableView на ios 11, как получить табличное представление с ячейками переменной высоты для автоматического изменения размера этого содержимого?
Ответы здесь: Изменение размера UITableView для соответствия содержимому сгнило и больше не применяется к ios 11
1 ответ
Похоже, когда UITableView
использует автоматические размеры - UITableViewAutomaticDimension
, он рассчитывает contentSize
динамически - как вы прокручиваете.
Поэтому решение состоит в том, чтобы отследить эти изменения с помощью KVO:
var contentSizeObservation: NSKeyValueObservation?
override func viewDidLoad() {
super.viewDidLoad()
contentSizeObservation = tableView.observe(\.contentSize, options: [.new], changeHandler: { tableView, value in
// Do the setup here, this will be called multiple times
})
}
Важный
Вы должны определить contentSizeObservation
как глобальный (как член класса), или же changeHandler
Блок не будет вызван, потому что переменная будет очищена ARC.