如何在GROUPED UITableView中更改BETWEEN部分的高度?

时间:2012-03-22 13:51:23

标签: iphone ios

默认高度对我来说太大了。 如何更改两个部分之间的高度?

=============================================== =============================

抱歉我的英语不好...... 我的意思是两个部分之间的差距太大了。如何改变?

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    CGRect frame = CGRectMake(0, 0, tableView.frame.size.width, 2.0f);
    UIView *view = [[[UIView alloc] initWithFrame:frame] autorelease];
    view.backgroundColor = [UIColor blueColor];
    return view;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    CGRect frame = CGRectMake(0, 0, tableView.frame.size.width, 2.0f);
    UIView *view = [[[UIView alloc] initWithFrame:frame] autorelease];
    view.backgroundColor = [UIColor redColor];
    return view;
}

我更改了每个部分的页眉视图和页脚视图。 这是结果: enter image description here

我认为差距可能有一个最小高度,因为我将页眉和页脚的高度设置为2px,但两个部分之间的差距仍然很大。

4 个答案:

答案 0 :(得分:16)

您可以在每个部分之间使用页脚视图,并通过在UITableView的委托中实现以下方法为其提供所需空间的大小。

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section

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

在第一个委托方法中,您可以返回一个简单的UIView实例,在第二个方法中,您可以返回该视图应该的高度。第二种委托方法应该允许您控制部分之间的差距。

答案 1 :(得分:4)

试用这段代码

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>;
}

和Swift版本是

func tableView(tableView: UITableView,  viewForFooterInSection section: Int) -> UIView? {
    return your footer view
}

func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {

    return your footer view height
}

func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 0.01
}

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    return UIView.init(frame: CGRect.zero)
}

答案 2 :(得分:0)

你需要使用方法heightForHeaderInSection来定义header&amp;之间的空间。细胞文本。您也可以根据不同的部分进行更改,例如。在某些部分,您可能需要显示更多距离&amp;在某些情况下,你不想表现出差距。对于这种情况,您可以使用

  

CGFLOAT_MIN,其为0.000001f

。举个例子,你如何使用不同的标题高度的不同部分

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

希望它会对你有所帮助。

答案 3 :(得分:0)

对于那些想增加距离的人。

基于设置页眉/页脚高度的解决方案可能会有一个副作用:如果页眉或页脚有一些文本,它将在增加的页眉/页脚中垂直居中。

要解决此问题,您可以使用自定义的页眉/页脚视图,但是我建议您添加一个空白部分,在其中需要额外的间隙并为其设置页脚高度(如果为nil或空字符串,它将不会显示)。