#ios #swift #uitableview
#iOS #swift #uitableview
Вопрос:
Я хочу, чтобы последняя ячейка tableViewCell была такой же большой, как TableView, но я хочу, чтобы старые ячейки возвращались к нормальному размеру каждый раз, когда я создаю новую.
Я уже пробовал, делая это в функции heightForRowAt, но каждая ячейка остается размером TableView.
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
var cellHeight: CGFloat = CGFloat()
for cell in tableView.visibleCells {
cellHeight = cell.bounds.height
}
let TableHeight = tableView.frame.height
if indexPath.row == arr.count - 1 {
return TableHeight
}else{
return cellHeight
}
}
Есть ли какой-либо способ изменить размер ячейки после ее создания или любое другое решение моей проблемы?
Заранее спасибо
Ответ №1:
Просто попробуйте поместить постоянное число в нормальную высоту ячейки
if indexPath.row == arr.count - 1 {
return TableHeight
}else{
return 40 // or whatever you want
}
если вы спросите себя, почему?
В первый раз высота ваших ячеек будет равна нулю, а в последний раз — TableHeight
Тогда при каждом вызове метода heightForRowAt высота ваших ячеек будет равна = TableHeight, а последняя высота также будет TableHeight .
потому что ваш цикл for вернет высоту последней ячейки из visibleCells, и у вас есть одна видимая ячейка "other cells not visibles height = zero"
, поэтому она будет высотой таблицы
Комментарии:
1. Спасибо, это сработало. Но у меня есть динамические высоты ячеек с автозаполнением, поэтому, если ячейка больше обычной высоты ячейки, она будет обрезана.