table 视图 headers 上方的额外填充 iOS 15

Extra padding above table view headers in iOS 15

如何更改已开始出现在 iOS 15 中的 UITableView 部分 headers 上方的额外填充?

由于 iOS 15,UITableView 包含一个名为 sectionHeaderTopPadding 的新 属性,它指定每个部分上方的填充量 header。

tableView.sectionHeaderTopPadding = 0.0

Note: This applies only to the UITableView.Style.plain.

将它放在主要的 didFinishLaunchingWithOptions 中以全局修复它:

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

用于在应用中的所有位置应用更改

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

最好在AppDelegate.

对于 Objective C 版本,您可以使用下面的代码;

if (@available(iOS 15.0, *)) {
        [_tableViewC setSectionHeaderTopPadding:0.0];
        
};

其中 tableViewC 是目标表视图。

对于 Xamarin Forms,您可以在 FinishedLaunching 中的 LoadApplication 调用之后添加以下代码:

if(UIDevice.CurrentDevice.CheckSystemVersion(15, 0))
{
    void_objc_msgSend_nfloat(UITableView.Appearance.Handle, ObjCRuntime.Selector.GetHandle("setSectionHeaderTopPadding:"), 0);
}

我错过了版本检查,应用程序在低于 iOS15 的情况下崩溃,但没有通过 TestFlight 获得崩溃报告。

obj-c 的全局方式:

if (@available(iOS 15.0, *)) {
    [[UITableView appearance] setSectionHeaderTopPadding:0.0f];
}

将它放在主要的 didFinishLaunchingWithOptions 中以全局修复它

if (@available(iOS 15.0, *)) {
    [[UITableView appearance] setSectionHeaderTopPadding:0.0f];
}
if #available(iOS 15.0, *) {
    UITableView.appearance().sectionHeaderTopPadding = 0.0
}

如果您像我一样在设置 sectionHeaderTopPadding 后在某些分组样式 tableView 中遇到问题,但仍然看到第一部分令人讨厌的差距,只需在 VC 中添加以下内容 viewDidLoad:

tableView.tableHeaderView = UIView(frame: CGRect(x: .zero, y: .zero, width: .zero, height: CGFloat.leastNonzeroMagnitude))

发现于here

这是 iOS15 中 UITableView 的新实例 属性。 https://developer.apple.com/documentation/uikit/uitableview/3750914-sectionheadertoppadding

sectionHeaderTopPadding 指定每个部分上方的填充量 header.

要删除填充,请使用以下代码

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

要从应用中的所有位置删除填充,请在 AppDelegate

中使用以下代码
if #available(iOS 15.0, *) {
    UITableView.appearance().sectionHeaderTopPadding = 0.0
}