Иногда установка константы с размером содержимого tableview не будет корректно обновлять высоту, потому что tableview перезагружается или вычисляется самостоятельно
Что будет лучшим местом?
Если у вас есть статические данные, то, вероятно, viewDidAppear
- лучшее место
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.view.layoutIfNeeded()
self.heightConstraint.constant = self.tableView.contentSize.height
self.view.layoutIfNeeded()
}
Если ваши данные динамические, как вызов API. Затем внутри блока ответа внутри главной очереди.
DispatchQueue.main.async {
self.tableView.reloadData()
self.view.layoutIfNeeded()
self.heightConstraint.constant = self.tableView.contentSize.height
self.view.layoutIfNeeded()
}
ВАЖНО : Коэффициент, который имеет непосредственное отношение к размеру контента, равен estimateRowHeight
Так что, если вы уверены в высоте вашей ячейки, то вы напрямую применяете в случае статического числа строк
Надеюсь, это поможет вам и кому-то еще, кто сталкивается с той же проблемой