🐷

[iOS 15+] TableViewのsection headerの上の空白をなくす方法

2022/09/20に公開

UITableViewのsection headerの上の空白

iOS 15+では、TableViewのsection headerの上に空白が存在する。

空白をなくす方法 (仮)

iOS 15からsectionHeaderTopPaddingが追加されたので、それを使う。しかし・・・

if #available(iOS 15.0, *) {
    tableView.sectionHeaderTopPadding = 0
}

全プロジェクトに適用したい場合は

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

しかし・・・

sectionHeaderTopPadding = 0にした後、
なんと、、なぜか、、headerが切り替わるの挙動が変わる!!(iOS 14の挙動になる)

Before(iOS 15本来の挙動) After
sectionのタイトルが切り替わる 上のsectionが上に押し出される

解決方法 (最終)

おそらくSDKのバグかも・・
挙動が変わることを避けたいのなら、以下の解決方法がある。

if #available(iOS 15.0, *) {
    tableView.sectionHeaderTopPadding = 0.01 // 0に設定ではなく
}

全プロジェクトに適用したい場合は

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

SwiftUIの場合

SwiftUIの場合も同じ。
UITableView.appearance().sectionHeaderTopPaddingを設定。

Discussion