最近兩天經(jīng)常發(fā)現(xiàn)TableView的頂部或者底部會(huì)有空白祟滴,于是不停的找解決方案檀蹋。這里總結(jié)幾種常用内狸,也有效解決了我的問(wèn)題的方法。??
1. heightForFooterInSection
如果TableView的style是Grouped凿叠,頂部或者底部就會(huì)有空白的區(qū)域涩笤,這個(gè)時(shí)候DataSourse的heightForHeaderInSection和heightForFooterInSection分別return 0.01就可以了嚼吞。(不要return 0,不然會(huì)覺得沒有設(shè)置高度蹬碧,變成默認(rèn)的高度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默認(rèn)return UIView()確保高度設(shè)置為0.01成功
2. 如果第一種還是不行,來(lái)看看第二種
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))
有時(shí)候第一種還是得不到效果恩沽,加上這個(gè)代碼就可以了誊稚。??
3. 如果前兩種設(shè)置了還是不行,再試試這個(gè)啊
首先罗心,前面兩種方法的代碼要保留里伯,還是不可以,有可能只是datasourse和delegate的位置放的不對(duì)渤闷。(╯‵□′)╯︵┻━┻
浪費(fèi)了我兩個(gè)小時(shí)疾瓮,真的是,要被坑的暈過(guò)去了飒箭。??
先說(shuō)說(shuō)我是怎么發(fā)現(xiàn)的:
在我確保狼电,我已經(jīng)設(shè)置了高度是0.01的時(shí)候,我就懷疑弦蹂,是否是contentSize計(jì)算錯(cuò)誤了肩碟。
cellHeight是65,個(gè)數(shù)是10個(gè)盈匾,contentSize應(yīng)該是650才對(duì)腾务”下猓可是我打了個(gè)斷點(diǎn)在點(diǎn)擊事件削饵,打印了一下TableView的contentSize.height是670。多了20未巫,正是我底部空白的區(qū)域的大小窿撬。
偶然看到一篇文章說(shuō),設(shè)置代理的位置叙凡,有可能會(huì)影響contentSize的計(jì)算劈伴。于是換了一下位置就可以了。??
代碼:
錯(cuò)誤的N找跛璧!
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))
/* 這個(gè)位置是錯(cuò)誤的!P绿洹追城! */
tableView.dataSource = self
tableView.delegate = self
self.view.addSubview(tableView)
換個(gè)位置!T镒病座柱!【氣的暈過(guò)去??】
/* 不顯示分割線 */
tableView.separatorStyle = UITableViewCellSeparatorStyle.none
/* 我在這里了C灾摹!看到我了嗎色洞?戏锹? */
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)
如果還是不行,大家可以留言火诸,一起填坑????
好好學(xué)習(xí)锦针,天天向上。<( ̄oo, ̄)/