我希望我的最后一个单元格占用tableview中剩余的所有剩余空间。所以我写了这段代码:
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if indexPath.row == tableView.numberOfRows(inSection: 0) - 1 {
let sectionheight: CGRect = tableView.rect(forSection: 0)
let tableViewFrame: CGRect = tableView.frame
let height: CGFloat = tableViewFrame.size.height - (sectionheight.size.height - 100)
cell.frame.size.height = height
cell.layoutIfNeeded()
}
}
并且在该单元格的heightForRow中,我返回的值只有100。
问题是计算的高度是正确的,但单元格没有变化。
如何确保细胞高度发生变化?
答案 0 :(得分:1)
您应该在heightForRow
而不是willDisplayCell
中进行高度计算,您还可以先在willDisplayCell
中保存一些属性,然后拨打tableView.beginUpdate
和endUpdate
强制重新计算单元格高度
单元格没有变化,因为tableview处理单元格高度,而不是单元格,单元格只控制它的内容高度