Home > Enterprise >  sectionHeaderTopPadding doesn't apply on Grouped and InsetGrouped UITableView
sectionHeaderTopPadding doesn't apply on Grouped and InsetGrouped UITableView

Time:12-18

since iOS15 a strange top gap started to appear

enter image description here

after research i found out that

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

should solve the issue

however this works only for plain style table (UITableView.Style.plain), but my table is grouped and it looks like this property is taking no effect on GROUPED style (UITableView.Style.grouped)

is this a bug? how to remove the gap on grouped table?

CodePudding user response:

According to the What's new in UIKit video from WWDC2021, top padding seems to have been added only to the plain style of UITableView.

Here's the part that mentions it

We have a new appearance for headers in iOS 15. For plain lists, section headers now display seamlessly in line with the content, and only display a visible background material when becoming pinned to the top as you scroll down. In addition, there's new padding inserted above each section header to visually separate the sections with this new design. You should use this plain style in conjunction with index bars for fast scrubbing when list content is long as demonstrated in the Contacts app.

https://developer.apple.com/videos/play/wwdc2021/10059/?time=438

CodePudding user response:

You can try this (this worked for me for grouped/insetGrouped)

            if #available(iOS 15.0, *) {
                UITableView.appearance().sectionHeaderTopPadding = 0
                let tableHeaderView = UIView()
                tableHeaderView.translatesAutoresizingMaskIntoConstraints = false
                tableHeaderView.heightAnchor.constraint(equalToConstant: 5).isActive = true
                UITableView.appearance().tableHeaderView = tableHeaderView
            } else {
                // Fallback on earlier versions
            }
  • Related