iOS 15 中表格视图标题上方的额外填充

问题描述 投票:0回答:10

如何更改 iOS 15 中开始出现的

UITableView
部分标题上方的额外填充?

ios uitableview ios15
10个回答
144
投票

自 iOS 15 起,

UITableView
包含一个名为
sectionHeaderTopPadding
的新属性,用于指定每个节标题上方的填充量。

tableView.sectionHeaderTopPadding = 0.0

注意: 这仅适用于

UITableView.Style.plain


99
投票

用于在应用程序中的任何地方应用更改

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

最好在

AppDelegate


31
投票

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

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

11
投票

obj-c 的全局方式:

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

11
投票

这是 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
}

5
投票

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

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

4
投票

如果您像我一样在设置

sectionHeaderTopPadding
后在某些分组样式的 tableView 中遇到麻烦,但仍然看到第一部分的恼人间隙,只需在您的 VC 中添加以下内容即可
viewDidLoad

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

这里

找到

2
投票

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

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

其中 tableViewC 是目标表视图。


1
投票

对于 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.0)也会导致粘性节标题损坏。它们不再相互推挤,而是传入的标题滚动到旧标题下方。你甚至可以在苹果自己的应用程序(例如地址簿)中看到它被破坏。

© www.soinside.com 2019 - 2024. All rights reserved.