如何改变额外的填充上面的 UITableView节头已经开始出现在 iOS15?
UITableView
自 iOS15以来,UITableView包含了一个名为 sectionHeaderTopPadding的新属性,它指定了每个节头上的填充量。
sectionHeaderTopPadding
tableView.sectionHeaderTopPadding = 0.0
注意: 这只适用于 UITableView.Style.plain。
UITableView.Style.plain
把这个放在 didFinishLaunchingWithOptions 的主目录中,全局修复它:
if (@available(iOS 15.0, *)) { UITableView.appearance.sectionHeaderTopPadding = 0; }
适用于应用程序中的所有变更
if #available(iOS 15.0, *) { UITableView.appearance().sectionHeaderTopPadding = 0.0 }
最好是 AppDelegate。
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中添加以下内容:
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中使用以下代码