如何让UITableView的最后一行占满表格剩余未占用空间
实现方案
核心逻辑
根据不同行号分别设置高度即可:
- 第一行返回固定高度150
- 第二行返回TableView总高度减去第一行高度,就能占满剩余可用空间。如果存在表格头、分区头、contentInset内边距等元素,计算时同步减去对应高度即可
代码实现
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { if indexPath.row == 0 { // 第一行固定高度 return 150 } else if indexPath.row == 1 { // 第二行占满剩余空间,无额外元素时直接计算即可 return tableView.bounds.height - 150 // 若存在内边距等特殊配置,可调整为下方写法: // return tableView.bounds.height - tableView.contentInset.top - tableView.contentInset.bottom - 150 } // 其他行按需求返回对应高度即可 return UITableView.automaticDimension }
注意事项
- 如果TableView的高度会动态变化(比如横竖屏切换、父视图尺寸调整),尺寸变化后需要调用
tableView.reloadData()刷新行高 - 如果存在分区头/尾、表格头/尾视图,计算剩余高度时要减去对应视图的高度,避免第二行超出可视范围触发滚动
内容的提问来源于stack exchange,提问作者CuriousMan
相关产品推荐
相关产品推荐

