я, наконец, вырубали решение:
tableView.contentSize.height
не будет работать для динамических ячеек, потому что они будут возвращать только количество ячеек * estimatedRowHeight
.
Следовательно, чтобы получить динамическую высоту стола, вы ищете все видимые ячейки и суммируйте их высоты. Обратите внимание, что это работает только для табличных представлений, которые короче экрана.
Однако, прежде чем мы сделаем вышеуказанное, чтобы найти видимые ячейки, важно знать, что примечание нам нужно получить представление таблицы на экране, чтобы мы могли получить видимые ячейки. Для этого мы можем установить ограничение высоты для табличного представления некоторой сколь угодно большим числом только поэтому появляется на экране: высота
Набор табличного ограничения:
// Class variable heightOfTableViewConstraint set to 1000
heightOfTableViewConstraint = NSLayoutConstraint(item: self.tableView, attribute: .height, relatedBy: .equal, toItem: containerView, attribute: .height, multiplier: 0.0, constant: 1000)
containerView.addConstraint(heightOfTableViewConstraint)
Зов tableView.layoutIfNeeded(), и после его завершения, обратите внимание на видимые ячейки, обобщать их высоту и редактировать heightOfTableViewConstraint
:
UIView.animate(withDuration: 0, animations: {
self.tableView.layoutIfNeeded()
}) { (complete) in
var heightOfTableView: CGFloat = 0.0
// Get visible cells and sum up their heights
let cells = self.tableView.visibleCells
for cell in cells {
heightOfTableView += cell.frame.height
}
// Edit heightOfTableViewConstraint's constant to update height of table view
self.heightOfTableViewConstraint.constant = heightOfTableView
}
Где вы получаете высоту столаView? –
self.tableView.frame.size.height; –
@Syed, это тоже не работает. – leonardloo