iPhone UITableView:如何删除组样式表中各节之间的间距?

时间:2014-02-14 05:54:28

标签: ios iphone objective-c uitableview tableview

我正在创建一个表视图,其中有10个部分,所有部分都有标题视图,但没有单元格。因此,简而言之,我的表视图仅显示10个标题视图;任何部分都没有细胞。现在,当我这样做时,部分的标题视图之间有一些空格。我想删除那个空间。那可能吗?你可以给我一些提示或解决这个问题吗?

以下是数据源方法:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
   return 10;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
  return 0;
}

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UILabel * label = [[UILabel alloc] init];
    label.backgroundColor = [UIColor grayColor];
    return label;
}

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 44.0f;
}

以下是输出的屏幕截图: enter image description here

我有一个复杂的原因,为什么我这样做,我不能通过写作来解释。我想要做的就是在节的标题视图中没有间距。提前谢谢。

9 个答案:

答案 0 :(得分:48)

试试这个..

   self.tableView.rowHeight = 0; // in viewdidload
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; // in viewdidload

 -(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.01f;
}

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return <your header height>;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
return [[UIView alloc] initWithFrame:CGRectZero];
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
return <your header view>;
}

也将表分隔符设置为无。

答案 1 :(得分:20)

如果在0中返回tableView:heightForFooterInSection:,则返回默认值(可能为10.0)。这很棘手,但您可以使用CGFLOAT_MIN代替0来删除页脚。

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

更新

Swift 3

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.leastNormalMagnitude
}

答案 2 :(得分:3)

尝试使用以下代码

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
    return 0.25; // as for you need
}

您也可以通过以下委托方法进行管理

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

很短,您可以通过以上两种方法来管理它。

答案 3 :(得分:3)

分组样式表视图有一个默认页脚,你还应该自定义页脚来覆盖它

尝试简单的风格。

typedef enum {
   UITableViewStylePlain,
   UITableViewStyleGrouped
} UITableViewStyle;

答案 4 :(得分:3)

您可以直接在界面中执行此操作,您必须将页脚高度设置为1,如下所示:

enter image description here

答案 5 :(得分:1)

所以我不能投票,但我可以发表回复

事实上这种方式的正确答案

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

答案 6 :(得分:0)

将表视图样式从分组更改为普通。这解决了我的问题。

答案 7 :(得分:0)

您需要使用方法heightForHeaderInSection。您也可以根据不同的部分进行更改,例如。在某些部分,您可能需要显示更多距离&amp;在某些情况下,你不想表现出差距。对于这种情况,您可以使用0.000001f的CGFLOAT_MIN。举个例子,你如何使用不同的标题高度的不同部分

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0 || section == 2)
    {
        return 55.0;
    }
    else
    {
        return CGFLOAT_MIN;
    }
}

希望它会对你有所帮助。

答案 8 :(得分:-1)

尝试使用:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{
   return 0;
}

如评论中所述,请尝试使用:

 self.tableView.rowHeight = 0;