目标c-分组的UITableView在底部有20px的额外填充

分组表视图似乎在iOS 6的底部具有额外的填充(iOS 5没有该填充),但是我找不到任何文档来表明这是正确的/预期的行为。

这也会影响示例项目,例如11px示例中的1px项目。 我认为我必须将sectionFooterHeight中的样式更改为“分组”,并将SDK更新为iOS 6,但是对该项目没有其他更改。

调查显示,为页眉和页脚视图保留了1px,还有一些无法解释的11px。有没有实际的页眉或页脚的意见(sectionFooterHeight1pxnil,贯彻和例如viewForFooterInSection返回nil什么都不做)。尽管我可能确实错过了一些东西,但在tableView本身上找不到任何“ 20”值。

为页脚添加大小为零的视图没有任何作用,但是添加1px正方形视图会导致多余的填充消失。 例如。:

tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0,0,1,1)];

它的确仍然占用了1px的高度,因此底部填充现在为11px,但这远不如20引人注意。现在将sectionFooterHeight设置为0将仅产生1px的底部空间。

我的问题是:什么? 以及如何将其完全删除? 这并不是关键任务,但非常奇怪,不可取,据我所知,这是无证的。

请注意-从苹果开发论坛复制过去的问题。 但是我有完全相同的问题,我也不知道如何解决。

Vlad Polyanskiy asked 2020-02-13T09:31:52Z
12个解决方案
69 votes

@frankWhite'解决方案效果很好,但是这是一个更好的解决方案,避免键入0.1、0.001或其他值,以减少歧义。

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

    // remove bottom extra 20px space.
    return CGFloat.min
}
// Objective-C version
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {

    // remove bottom extra 20px space.
    return CGFLOAT_MIN;
} 
tounaobun answered 2020-02-13T09:32:08Z
31 votes

您可以使用contentInset来补偿20px的额外底边距:

tableView.contentInset = UIEdgeInsetsMake(0, 0, -20, 0);
an0 answered 2020-02-13T09:32:28Z
12 votes

在Swift 3中

override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.leastNormalMagnitude
}
zippo answered 2020-02-13T09:32:50Z
11 votes
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
   return 0.01;
} 

对我有用

frankWhite answered 2020-02-13T09:33:10Z
3 votes

我猜这是唯一可行的解决方案。我尝试将tableFooterViewtableHeaderView设置为nil。但是什么也没发生。然后下面的解决方案起作用。返回零“ return 0;”。 没有效果。我们应该返回尽可能低的高度。

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

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

注意:这是我打印值时得到的。

CGFLOAT_MAX = 340282346638528859811704183484516925440.000000

CGFLOAT_MIN = 0.000000

abhimuralidharan answered 2020-02-13T09:33:46Z
1 votes

最近,我发现了这个问题,并遵循了上面发布的解决方案,但是所有解决方案均无效。 就我而言,我有一个具有动态高度的节标题。 受以上解决方案的启发,我编写了以下代码,并解决了问题。 希望对您有所帮助。

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

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

和配置tableView的页眉和页脚是这样的:

tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: 1, height: 0.1))
tableView.tableFooterView = UIView(frame: CGRect(x: 0, y: 0, width: 1, height: 0.1))
Dan Lee answered 2020-02-13T09:34:10Z
0 votes

以下代码对我有用

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

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return 0;
}
Amit Battan answered 2020-02-13T09:34:31Z
0 votes

Swift 3代码

class PaddingLessTableView : UITableView
{
    override func layoutSubviews() {
        self.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
        super.layoutSubviews()
    }
}
hhamm answered 2020-02-13T09:34:51Z
0 votes

这样可以解决问题:对象-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {         返回0.1;     }

迅速:覆盖func tableView(_ tableView:UITableView,heightForFooterInSection部分:Int)-> CGFloat {     返回0.1}

Joe answered 2020-02-13T09:35:16Z
0 votes

在Swift 4.2中,您可以尝试将表格标题设置为最低标准幅度高度-

var frame = CGRect.zero
frame.size.height = .leastNormalMagnitude
tableView.tableHeaderView = UIView(frame: frame)
Yash answered 2020-02-13T09:35:36Z
0 votes

迅捷5

 tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: .leastNormalMagnitude))
Den answered 2020-02-13T09:35:57Z
-1 votes

使用UITableViewbounces属性:

[yourTableView setBounces:NO];

这将删除UITableView顶部和底部的多余填充。实际上,它将只是禁用表视图的滚动视图以滚动到内容的边缘。

KarenAnne answered 2020-02-13T09:36:25Z
translate from https://stackoverflow.com:/questions/14210474/grouped-uitableview-has-20px-of-extra-padding-at-the-bottom