隐藏 GroupedTableView 上边多余的间隔
当设置 UITableview 的 Style 为 Grouped 时,会出现下面这种情况:
这里其实是一个被 UITableView 默认填充的 HeaderView,如果直接设置 HeaderView 高度为 0 也不行,但可以设置成 CGFloat.leastNormalMagnitude 和 0.1。这边有个黑魔法可以使用:
class TableViewController: UITableViewController {
override func viewDidLoad() {
let rect: CGRect = CGRect(x: 0, y: 0, width: 0, height: CGFloat.leastNormalMagnitude)
tableView.tableHeaderView = UIView(frame: rect)
}
}
结果如下:
UITableViewHeader 的一些研究:
- 若传入的 height == 0,则 height 被设置成默认值;
- 若 height 小于屏幕半像素对应的高度,这个 header 不在另一个像素渲染。
半像素也就是 1.0 / scale / 2.0,如在 @2x 屏上是 0.25,所以高度设置为 0.1 也行。