Начиная с iOS 8, у вас есть возможность работать с ячейками с самоопределением размера , указав следующие параметры в табличном представлении:
tableView.estimatedRowHeight = 85.0
tableView.rowHeight = UITableView.automaticDimension
Это будет работать до тех пор, пока системаМожно рассчитать строки на основе существующих ограничений или содержимого.Позаботьтесь о том, чтобы, если вы установили AutomaticDimension, то heightForRowAtIndexPath не вызывалось!
Иногда для более сложных данных некоторые ячейки могут быть вычислены автоматически, но другим нужна специальная логика вычисления высоты.В этом случае вы должны только установить оценку RowHeight и затем реализовать cellForRowAtIndexPath с автоматической логикой для ячеек, которая может работать правильно:
// Set the estimated row height in viewDidLoad, but *not* automatic dimension!
override func viewDidLoad() {
// other viewDidLoad stuff...
tableView.estimatedRowHeight = 85.0
tableView.delegate = self
}
// Then implement heightForRowAtIndexPath delegate method
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if theAutomaticCalculationWorksForThisRow {
return UITableView.automaticDimension
} else {
// Calculate row height based on custom logic...
let rowHeight = 85.0
return rowHeight
}
}