减少UITableView各部分之间的空间

时间:2010-05-12 09:03:58

标签: iphone ios uitableview

有没有办法减少UITableView的两个部分之间的空间?每个部分之间大约有15个像素。我已经尝试为-tableView:heightForFooterInSection:-tableView:heightForHeaderInSection:返回0,但这不会改变任何内容。

有什么建议吗?

10 个答案:

答案 0 :(得分:257)

这有点棘手,但试试这段代码:

- (CGFloat)tableView:(UITableView*)tableView 
           heightForHeaderInSection:(NSInteger)section {
    if (section == 0) {
        return 6.0;
    }

    return 1.0;
}

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

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

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

相应地更改值。要删除空格,我认为不会接受0.0。最小的理智值似乎是1.0。

答案 1 :(得分:136)

对于想要将距离缩小到0的所有人,您必须使用:

tableView.sectionHeaderHeight = 0.0;
tableView.sectionFooterHeight = 0.0;

因为UITableViewDelegate的服务仅从大于零的浮点数开始生效。

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


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

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

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

(使用iOS 4.1和XCode 4.0.2)

答案 2 :(得分:33)

您可以在“大小”选项卡下的Interface Builder中实际设置页脚/页眉/单元格高度。默认情况下,页眉/页脚设置为10.0。

答案 3 :(得分:25)

您必须减小节标题/页脚高度。然后部分之间的空间将减少。

试试这段代码

它对我有用: - )

tableView.sectionHeaderHeight = 2.0;
tableView.sectionFooterHeight = 2.0;

答案 4 :(得分:20)

您还可以从故事板中减小部分页脚和页眉的高度。在tableview中 - >尺寸检查员。转到章节高度。

Size inspector for UITableView in storyboard.

默认情况下,普通样式表设置为22,分组样式表设置为10。您可以通过分别增加/减少页眉和页脚的值来配置值。

答案 5 :(得分:5)

对我来说问题是因为我使用的是分组表视图样式(UITableViewStyleGrouped)。当我将其更改为普通样式(UITableViewStylePlain)时,tableView:heightForHeaderInSection:方法是确定每个节标题大小的唯一方法。

答案 6 :(得分:3)

更新iOS7:由于ARC自动发布更新,此处编辑了@Martin Stolz代码。

-(CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section
{
    if(section == 0)
        return 6;
    return 1.0;
}

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

-(UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section
{
    return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
}

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

(使用iOS7,Xcode v5.0)

答案 7 :(得分:0)

对我来说,只需使用以下代码解决此问题,

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return section == 0 ? 1 : 20 // 20 is my other sections height
}

第一部分的 1 已经解决了问题。

答案 8 :(得分:0)

也许使用这个,0不能按预期工作

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

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

答案 9 :(得分:0)

要更改页眉/页脚空间,必须执行以下方法

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?

AND

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat

(使用相应方法更改页脚高度)

以下代码完全删除了部分周围的空格:

public func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    return nil
}

public func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    return nil
}

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

public func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return .leastNonzeroMagnitude
}