我正在尝试使用页脚视图创建一个UITableview,以填充UITableview的剩余空白区域。然而,问题是细胞的高度不同。
我知道,如果细胞都是静态高度,我可以简单地计算出有多少个细胞,并将其乘以静态高度。不幸的是,在这种情况下,这不起作用。
目前的解决方案:
适用于静态高度单元格。
不适用于动态高度单元格。
private func adjustFooterHeight() {
if data.count == 0 {
footerView.frame.size.height = tableView.bounds.height
}
else {
//I use data.count instead of (data.count - 1) as I have the extra hidden cell, as pictured in image 2.
let bottomFrame = tableView.rectForRow(at: IndexPath(row: data.count, section: 0))
let height = tableView.bounds.height - (bottomFrame.origin.y + bottomFrame.height - rowHeight)
footerView.frame.size.height = height < 0 ? 0 : height
tableView.reloadData()
}
}
意图图:
答案 0 :(得分:2)
所以我想出来了......
这是解决方案。
private func adjustFooterHeight() {
//Get content height & calculate new footer height.
let cells = self.tableView.visibleCells
var height: CGFloat = 0
for i in 0..<cells.count {
height += cells[i].frame.height
}
height = self.tableView.bounds.height - ceil(height)
//If the footer's new height is negative, we make it 0, since we don't need footer anymore.
height = height > 0 ? height : 0
//Create the footer
let footerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.width, height: height))
self.tableView.tableFooterView = footerView
}