如何更改UITableView
已开始出现在 iOS 15 中的部分标题上方的额外填充?
9 回答
从 iOS 15 开始,UITableView
包含一个名为的新属性sectionHeaderTopPadding
,它指定每个部分标题上方的填充量。
tableView.sectionHeaderTopPadding = 0.0
用于在应用程序的任何地方应用更改
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];
}
将它放在主要的 didFinishLaunchingWithOptions 中以全局修复它
if (@available(iOS 15.0, *)) {
[[UITableView appearance] setSectionHeaderTopPadding:0.0f];
}
if #available(iOS 15.0, *) {
UITableView.appearance().sectionHeaderTopPadding = 0.0
}
对于 Objective C 版本,您可以使用以下代码;
if (@available(iOS 15.0, *)) {
[_tableViewC setSectionHeaderTopPadding:0.0];
};
其中 tableViewC 是目标表视图。
如果您像我一样在设置后在某些分组样式 tableViews 中遇到问题,sectionHeaderTopPadding
但仍然看到第一部分的恼人间隙,只需在您的 VC 中添加以下内容viewDidLoad
:
tableView.tableHeaderView = UIView(frame: CGRect(x: .zero, y: .zero, width: .zero, height: CGFloat.leastNonzeroMagnitude))
在这里找到
对于 Xamarin 表单,您可以在 FinishedLaunching 中的 LoadApplication 调用之后添加以下代码:
if(UIDevice.CurrentDevice.CheckSystemVersion(15, 0))
{
void_objc_msgSend_nfloat(UITableView.Appearance.Handle, ObjCRuntime.Selector.GetHandle("setSectionHeaderTopPadding:"), 0);
}
我错过了版本检查,并且应用程序在低于 iOS15 的任何设备上崩溃,而没有通过 TestFlight 获得崩溃报告。
这是 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
}