小编典典

为什么在 iOS7 中我的 UITableView 顶部有额外的填充,样式为 UITableViewStyleGrouped

all

从 iOS7 开始,在我的顶部有额外的空间,UITableView它有一个样式UITableViewStyleGrouped

这是一个例子:

在此处输入图像描述

tableview 从第一个箭头开始,有 35 个像素的无法解释的填充,然后绿色标题是
aUIView返回的viewForHeaderInSection(其中部分为 0)。

谁能解释这 35 像素的数量来自哪里以及如何在不切换到 的情况下摆脱它UITableViewStylePlain


更新(答案):

在 iOS 11 及更高版本中:

tableView.contentInsetAdjustmentBehavior = .never

阅读 152

收藏
2022-03-03

共1个答案

小编典典

我找到了原始错误的原因并创建了一个示例项目来展示它。我相信有一个iOS7错误。

从 iOS7 开始,如果你创建了一个带有 Grouped 样式的 UITableView,但在第一个布局上没有设置委托,那么你设置了一个委托并调用
reloadData,顶部将有一个 35px 的空间永远不会消失。

请参阅我制作的展示错误的项目:https
://github.com/esilverberg/TableViewDelayedDelegateBug

特别是这个文件:https
://github.com/esilverberg/TableViewDelayedDelegateBug/blob/master/TableViewDelayedDelegateBug/ViewController.m

如果第 24 行处于活动状态,

[self performSelector:@selector(updateDelegate) withObject:nil afterDelay:0.0];

顶部会有一个额外的 35 px 空间。如果第 27 行处于活动状态并且第 24 行被注释掉,

self.tableView.delegate = self;

顶部没有空间。就像 tableView 在某处缓存结果并且在设置委托并调用 reloadData 后不重绘自身。

2022-03-03