iOS UITableView隐藏标题空间

iOS UITableView隐藏标题空间,ios,objective-c,uitableview,Ios,Objective C,Uitableview,在视图控制器中,我只有一个UITableView。在IB中,我将页眉和页脚高度设为1,并添加了以下代码,但在第一个单元格上方有大量页眉空间。我想摆脱那个空间。甚至滚动条也从第一个单元格开始,而不是从顶部开始 -(CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { CGFloat height = 0.0001; return height; } -(CGFloat)

在视图控制器中,我只有一个UITableView。在IB中,我将页眉和页脚高度设为1,并添加了以下代码,但在第一个单元格上方有大量页眉空间。我想摆脱那个空间。甚至滚动条也从第一个单元格开始,而不是从顶部开始

-(CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
CGFloat height = 0.0001;
return height;
}

-(CGFloat) tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
CGFloat height = 0.0001;
return height;
}

-(UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
// Create Empty View
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.frame.size.width,
                                                        [self tableView:self.visitorlistsTv heightForHeaderInSection:section]) ];
return view;
}

-(UIView *) tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
// Create Empty View
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.frame.size.width,
                                                        [self tableView:self.visitorlistsTv heightForFooterInSection:section]) ];
return view;

}
使用上述代码,页脚部分被隐藏。但是不能把标题也隐藏起来

查看解决方案的其他链接,我还在视图中添加了TableView,向TableView添加了约束,但标题部分仍然是它们的


我哪里做错了?如何摆脱它

如果您试图删除
UITableView
上方的空格,请尝试更改其
contentInset
属性,而不是制作高度较小的自定义标题:

self.tableView.contentInset = UIEdgeInsetsMake(-20.0f, 0.0f, 0.0f, 0.0f);
您可能需要调整第一个数字以将其调整到特定的视图场景


请理解,这也是一种变通方法(),但它比创建自定义表视图页眉更简洁。

在我看来,这里的问题是您根本不希望在视图中使用页眉/页脚。如果是这种情况,则不希望在页眉/页脚中返回任何视图。我建议要么在viewForHeader/Footer中返回nil,要么不完全实现这些函数——它们是可选的。

使用导航栏,您可以更改顶部的值

self.tableView.contentInset=UIEdgeInsetsMake(,,)

self.tableView.contentInset=UIEdgeInsetsMake(-75.0f,0.0f,0.0f,0.0f)

如果要避免设置硬编码高度,只需从第一个单元格Y位置设置contentOffset top,如下所示:

- (void)viewDidLayoutSubviews
{
  UITableViewCell *firstCell = (self.tableView.visibleCells.count > 0?self.tableView.visibleCells[0]:nil);

  [super viewDidLayoutSubviews];

  // Get rid of the defaut header height.
  self.tableView.contentInset = UIEdgeInsetsMake(-firstCell.frame.origin.y, 0, 0, 0);
}

使用此代码删除uitableview的第一个单元格之间的空格

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
 {
    return 0.002f;// set this...
 }

我有另一个解决方案(在iOS 10上检查),对我来说,接受的解决方案不起作用

在我的例子中,我有可变高度的节头,所以为第一节返回0高度是不可接受的。我使用分组表样式,因为我也需要分隔符来框接节标题

解决方案: 确保代码中没有类似的内容:

self.table.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
我使用它来删除空行的分隔符,但是使用分组样式是不必要的


我知道这不适合你们所有人,但对我这样的人可能会有所帮助。

为什么你们需要这么小的页眉和页脚?这看起来是一个相当糟糕的黑客行为。你想解决什么问题?我读到高度返回0没有任何区别,因此我尝试返回如此小的标题。在第一个单元格上方的表格顶部,他们的空间是空的,我想删除那个空间。谢谢你们的工作。我添加了这一行,我将第一段改为-20,然后可以看到这些变化。我不得不一直到零下60度才把它完全取下来。知道为什么吗?我的表也没有分组-IB中的样式是普通的,没有分组。是的,我不想要完全的页眉/页脚。但在height/viewFor方法中未实现或返回0和nil在标头中没有区别。有了页脚,它就工作了。对于标题,其唯一设置contentInset有效。我会尝试从代码中完全删除这些内容,或者尝试在IB中修复它们?我完全同意你的看法。我也试过了。在花了这么多时间之后,我在这里问。
self.table.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];