UITableView выскакивает после begin / endUpdates при использовании UITableViewAutomaticDimension [duplicate]
На этот вопрос уже есть ответ:
reloadData () UITableView с динамической высотой ячейки вызывает скачкообразную прокрутку 13 ответовПроблем: Когда я нахожусь надн изUITableView
(и только когда внизу) иtableView.beginUpdates()
/tableView.endUpdates()
называется,UITableView
немного подпрыгивает. Я не хочу этого делать.
Настроить У меня естьUITableView
сUITableViewCells
это будут разные размеры, и я используюUITableViewAutomaticDimension
чтобы размер клеток.
Пример Когда я вниUITableView
и я выбираю ячейку, которая впоследствии вызываетtableView.beginUpdates()
/tableView.endUpdates()
,UITableView
прокручивается / немного подпрыгивает.
Кто-нибудь нашел способ сделать это, чтобы после звонка не было нервовtableView.beginUpdates()
/tableView.endUpdates()
в то время как в концеUITableView
?
Пока я вычисляю все своиUITableViewCells
вручную, я бы предпочел этого не делать, потому что хотел бы воспользоватьсяUITableViewAutomaticDimension
.
Ко:
Вот код для отображения того, что происходит междуtableView.beginUpdates()
/tableView.endUpdates()
:
tableView.beginUpdates()
cell!.setNeedsUpdateConstraints()
cell!.updateConstraintsIfNeeded()
cell!.setNeedsLayout()
cell!.layoutIfNeeded()
tableView.endUpdates()
Мой видВилл
public override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
self.tableView.estimatedRowHeight = 150.0
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.reloadData()
//Bug in 8.0+ forces us to call three extra methods to get dynamic cell heights to work correctly...
self.tableView.setNeedsLayout()
self.tableView.layoutIfNeeded()
self.tableView.reloadData()
}
My heightForRow:
public override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
Обновит: Удалениеcell!.setNeedsUpdateConstraints()
, cell!.updateConstraintsIfNeeded()
, cell!.setNeedsLayout()
, а такжеcell!.layoutIfNeeded(
) отtableView.beginUpdates()
/tableView.endUpdates()
появляется, чтобы остановить прыжки, но тогда мои клетки не меняют размер ...
Редактироват: Это происходит только когда надн изUITableView
.