Изменение размера 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.

Другие вопросы по тегам