如何更改 iOS 15 中开始出现的
UITableView
部分标题上方的额外填充?
自 iOS 15 起,
UITableView
包含一个名为 sectionHeaderTopPadding
的新属性,用于指定每个节标题上方的填充量。
tableView.sectionHeaderTopPadding = 0.0
注意: 这仅适用于
。UITableView.Style.plain
用于在应用程序中的任何地方应用更改
if #available(iOS 15.0, *) {
UITableView.appearance().sectionHeaderTopPadding = 0.0
}
最好在
AppDelegate
。
将其放在主要的 didFinishLaunchingWithOptions 中以全局修复它:
if (@available(iOS 15.0, *))
{
UITableView.appearance.sectionHeaderTopPadding = 0;
}
obj-c 的全局方式:
if (@available(iOS 15.0, *)) {
[[UITableView appearance] setSectionHeaderTopPadding:0.0f];
}
这是 iOS 15 中 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
}
将其放在主要的 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))
在这里
找到对于 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 获得崩溃报告。
经过一番严重的摸索之后:这个新值(不是 0.0)也会导致粘性节标题损坏。它们不再相互推挤,而是传入的标题滚动到旧标题下方。你甚至可以在苹果自己的应用程序(例如地址簿)中看到它被破坏。