У меня есть табличный вид с возможностью для каждой ячейки иметь собственную высоту, поэтому не подходит для использования rowHeight
. Вместо этого прямо сейчас я использую let indexSet = NSIndexSet(index: 10)
и self.tableView.estimatedRowHeight = 75
. Это означает, что он вызывает функцию sizeThatFits
в ячейке, чтобы определить ее "высоту". Все это хорошо работает.
Проблема заключается в перезагрузке ячейки, которая отображается на экране. Прокрутка вниз, чтобы показать ячейку 10, например, затем перезаряжать ячейку 10, отлично работает. Но когда вы начинаете прокручивать резервную копию, проецируя ячейки, которые вы уже видели, они возвращаются к оценочной кривой RowHeight для каждой ячейки, полностью игнорируя sizeThatFits
, и поэтому перескакивают по мере прокрутки. Мне было бы невозможно дать точный или "достаточно хороший" оценочный рейтинг RowHeight, чтобы этот прыжок не был заметен, так как мои ячейки смогут отображать либо текст, либо полное изображение - большая разница в размер.
Я показал этот эффект здесь:
Я сделал много разных попыток, используя смесь heightForRowAtIndexPath, valuHeightForRowAtIndexPath и т.д. Я пробовал различные советы по StackOverflow. Кажется, что ничего не работает.
Я приложил очень простой пример проекта, где вы можете попробовать его для себя:
https://www.dropbox.com/s/8f1rvkx9k23q6c1/tableviewtest.zip?dl=0
- Запустите проект.
- Прокрутите список до появления ячейки 10.
- Подождите до 5 секунд, чтобы ячейка перезагрузилась (она становится фиолетовой).
- Прокрутка вверх.
Стоит отметить - это не происходит, если ячейка не отображается, когда она перезагружается. Если он находится выше или ниже текущей точки прокрутки, все работает так, как ожидалось.