測試環(huán)境:
Xcode 9.2
Swift 4.0
iOS 11.2
假如從 ViewControllerA push 到 ViewControllerB,B 中添加了一個 tableview,表格有多個分組唯笙,每個分組都設置了表頭和表尾(高度各 20 pt),為了方便起見鱼填,我將表格的背景設置成 yellow娘荡,表頭背景 red,表尾背景 green盖喷,這時候有幾種情況:
1、tableview 的初始化直接寫在 viewDidLoad 方法中难咕,很好课梳,除了表頭和表尾之外,沒有多余的間隔:
2余佃、如果在 viewDidLoad 方法中初始化一個按鈕暮刃,然后將 tableview 的初始化放在該按鈕的觸發(fā)事件里,又或者是在 viewDidLoad 中進行 alamofire 網絡請求爆土,然后 tableview 的初始化放在成功閉包中進行椭懊,可以看到此時第一個分組的頭部和最后一個分組的尾部將出現(xiàn)多余間隔,分別是 35pt 和 20pt:
3步势、如果將 tableview 設置成 plain 樣式氧猬,則不會出現(xiàn)上述問題背犯,但此時表頭和表尾都會懸停,可能滿足不了一些特定的開發(fā)需求盅抚;
出現(xiàn)多余間隔的原因現(xiàn)在還不得而知漠魏,網上查了不少資料,出現(xiàn)頭部多余間隔的問題也挺多的妄均,但沒出現(xiàn)尾部也有多余間隔柱锹。而且頭部間隔一般是 20pt,但我這遇到的確是頭部 35pt丛晦,尾部 20pt奕纫。網上也有不少解決方案,例如:
1烫沙、設置 tableHeaderView 和 tableFooterView:
let view = UIView()
view.frame = CGRect(x: 0, y: 0, width: 0, height: 0.01)
self.tableView.tableHeaderView = view
self.tableView. tableFooterView = view
用該方法設置后匹层,頭部的多余間隔是去除了,但尾部的間隔還是存在锌蓄;
2升筏、直接設置 tableview 的 contentInset:
self.tableView.contentInset = UIEdgeInsetsMake(-35, 0, -20, 0)
該方法是目前測試下來最好的方法。