iOS 15:删除 UITableView 单元格前的空 space

iOS 15: Remove empty space before cells in UITableView

我正在使用 UITableView 作为多部分列表。我看到的问题是每个部分的单元格上方有一个 space,即使我将 tableView(_:heightForHeaderInSection:) 设置为 0。即使只有一个部分并且我将 tableView(_:viewForHeaderInSection:) 设置为是 nil.

我已经尝试了 Whosebug 上与插图 overrides/edge 扩展相关的所有其他答案,但 none 有效。

示例:

检查您是否仅在 iOS 15 上看到此问题。如果是,这可能是由新引入的 UITableView.sectionHeaderTopPadding 属性 引起的。您需要将此值设置为 0 以删除节标题前的间距:

let tableView = UITableView()
tableView.sectionHeaderTopPadding = 0

// Etc.

此 属性 仅在 iOS 15 中可用,因此您需要 API 检查是否为早期版本构建。

如果您不在 iOS 15,this question 有这个问题的大部分答案。

另一种方法是设置在 UITableView 的 UIAppearance 代理中找到的 sectionHeaderTopPadding 值,这确保该值将应用于应用程序中的每个 UITableView 实例:

if #available(iOS 15.0, *) {
    UITableView.appearance().sectionHeaderTopPadding = CGFloat(0)
}