在 iOS15中,表视图头部上方有额外的填充

如何改变额外的填充上面的 UITableView节头已经开始出现在 iOS15?

21260 次浏览

自 iOS15以来,UITableView包含了一个名为 sectionHeaderTopPadding的新属性,它指定了每个节头上的填充量。

tableView.sectionHeaderTopPadding = 0.0

注意: 这只适用于 UITableView.Style.plain

把这个放在 didFinishLaunchingWithOptions 的主目录中,全局修复它:

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

适用于应用程序中的所有变更

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

最好是 AppDelegate

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

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

};

其中 tableViewC 是目标 tableview。

对于 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];
}

把这个放在主文件 did FinishLaunchingWithOptions 中,全局修复它

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))

给你发现的

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

sectionHeaderTopPadding,它指定每个节头上的填充量。

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

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

要从应用程序的所有地方删除填充,请在 AppDelegate中使用以下代码

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