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

这里有一个例子:

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

有人能解释一下这个35像素的数量是从哪里来的吗?我如何才能在不切换到UITableViewStylePlain的情况下摆脱它?


更新(回答):

在iOS 11及更高版本中:

tableView.contentInsetAdjustmentBehavior = .never

当前回答

在ios7中,你的视图开始于屏幕的上方,而不是导航栏的下方。它非常简单的设置到底部的导航栏。检查这个答案的解决方案,这不是同一个问题,但非常相关的你。

其他回答

我们有很多答案。

1)你可以在view didload中添加UIImageview

UIImageView * imbBackground = [UIImageView new];
[self.view addSubview:imbBackground];

2)可以设置页眉和页脚高度为0.1

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
    return 0.1;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    return 0.1;
}

3)您可以添加高度为0.1的页眉和页脚视图

tblCampaigns.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, tblCampaigns.bounds.size.width, 0.01f)];
tblCampaigns.tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, tblCampaigns.bounds.size.width, 0.01f)];
tableView.contentInsetAdjustmentBehavior = .never

是解决方案为我(iOS12 / xcode 10)在一个普通的表视图与头

自我。automcallyadjustsscrollviewinsets = NO;

这在iOS 11中已弃用,所以你应该使用new属性 contentInsetAdjustmentBehavior在你的代码中,它应该修复这个问题。

if #available(iOS 11.0, *) {
    collectionView.contentInsetAdjustmentBehavior = .never
}

在UIScrollView中添加了一个名为contentInsetAdjustmentBehavior的新属性,用于确定调整内容偏移量

只是取消勾选“调整滚动视图嵌入”对我来说没用。 后来,我尝试将tableview的头设置为nil,幸运的是,这是有效的。

self.tableView.tableHeaderView = nil

我检查了所有的答案。没有一个对我有效。我所要做的就是

self.myTableView.rowHeight = UITableViewAutomaticDimension
self.myTableView.estimatedRowHeight = 44.0

此外,这个问题并没有发生在tableView的顶部。它发生在tableView每个部分的顶部。

这个问题只发生在iOS9上。我们的应用在iOS10和iOS 11上运行良好。

我强烈推荐你看看这个很棒的问题和它的顶级答案:

在UITableView中使用自动布局进行动态单元格布局和可变行高