最近两天经常发现TableView的顶部或者底部会有空白,于是不停的找解决方案。这里总结几种常用,也有效解决了我的问题的方法。☺️
1. heightForFooterInSection
如果TableView的style是Grouped,顶部或者底部就会有空白的区域,这个时候DataSourse的heightForHeaderInSection和heightForFooterInSection分别return 0.01就可以了。(不要return 0,不然会觉得没有设置高度,变成默认的高度40)
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
return UIView()
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView()
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 0.01
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 0.01
}
安全起见,viewForHeaderInSection和viewForFooterInSection默认return UIView()确保高度设置为0.01成功
2. 如果第一种还是不行,来看看第二种
tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: kScreenWidth, height: 0.01))
tableView.tableFooterView = UIView(frame: CGRect(x: 0, y: 0, width: kScreenWidth, height: 0.01))
有时候第一种还是得不到效果,加上这个代码就可以了。😀
3. 如果前两种设置了还是不行,再试试这个啊
首先,前面两种方法的代码要保留,还是不可以,有可能只是datasourse和delegate的位置放的不对。(╯‵□′)╯︵┻━┻
浪费了我两个小时,真的是,要被坑的晕过去了。😤
先说说我是怎么发现的:
在我确保,我已经设置了高度是0.01的时候,我就怀疑,是否是contentSize计算错误了。
cellHeight是65,个数是10个,contentSize应该是650才对。可是我打了个断点在点击事件,打印了一下TableView的contentSize.height是670。多了20,正是我底部空白的区域的大小。
偶然看到一篇文章说,设置代理的位置,有可能会影响contentSize的计算。于是换了一下位置就可以了。😄
代码:
错误的!!
tableView = UITableView(frame: CGRect.init(), style: .grouped)
tableView.sectionFooterHeight = 0
/* 不显示分割线 */
tableView.separatorStyle = UITableViewCellSeparatorStyle.none
tableView.backgroundColor = ZZBColor().ORANGE
tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: kScreenWidth, height: 0.01))
tableView.tableFooterView = UIView(frame: CGRect(x: 0, y: 0, width: kScreenWidth, height: 0.01))
/* 这个位置是错误的!!! */
tableView.dataSource = self
tableView.delegate = self
self.view.addSubview(tableView)
换个位置!!!【气的晕过去😤】
/* 不显示分割线 */
tableView.separatorStyle = UITableViewCellSeparatorStyle.none
/* 我在这里了!!看到我了吗?? */
tableView.dataSource = self
tableView.delegate = self
tableView.backgroundColor = ZZBColor().ORANGE
tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: kScreenWidth, height: 0.01))
tableView.tableFooterView = UIView(frame: CGRect(x: 0, y: 0, width: kScreenWidth, height: 0.01))
self.view.addSubview(tableView)
如果还是不行,大家可以留言,一起填坑😝💪
好好学习,天天向上。<( ̄oo, ̄)/