使用 .grouped tableview 时,摆脱在我的标题中添加的空间

Posted

技术标签:

【中文标题】使用 .grouped tableview 时,摆脱在我的标题中添加的空间【英文标题】:Get rid of added space to my headers when using .grouped tableview 【发布时间】:2020-06-05 17:32:56 【问题描述】:

我把tableview .grouped 了,这样标题就不会粘了。但是,这会导致在 tableview 的顶部和底部添加额外的填充(我已修复),以及在我的标题视图顶部添加额外的空间。在线似乎人们唯一在谈论的是摆脱标题,但标题是我将其分组的原因,因为这样可以防止它粘住。如何摆脱 .grouped 添加到所有标题的 20 左右像素的填充而不摆脱我的标题视图?撤消 .grouped 设置会消除空白。这是我想要保持分组的唯一方法吗?

你会认为 Apple 会让这变得更容易。

我将标题涂成红色以突出显示上方不需要的空白。更改单元格所在行的高度不会影响白色区域。

【问题讨论】:

michaeldebo 你有没有找到解决这个问题的方法?我想像你一样使用部分标题(内联而不是粘性),但是一旦我将 tableview 的样式设置为.grouped,我不希望苹果添加额外的灰色填充 【参考方案1】:

这将摆脱整个tableView的headerView和footerView:

    tableView.tableHeaderView = UIView(frame: CGRect(x: CGFloat.leastNonzeroMagnitude, y: CGFloat.leastNonzeroMagnitude, width: tableView.bounds.size.width, height: CGFloat.leastNonzeroMagnitude))
    tableView.tableFooterView = UIView(frame: CGRect(x: CGFloat.leastNonzeroMagnitude, y: CGFloat.leastNonzeroMagnitude, width: tableView.bounds.size.width, height: CGFloat.leastNonzeroMagnitude))

然后要将节标题的高度单独设置为0,您必须使用以下函数:

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

对于每个部分的页脚,类似地:

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

【讨论】:

感谢您抽出宝贵时间回答,但这并不能解决我的部分标题上方多余空白的问题。 当我尝试它摆脱我制作并想要显示的标题时,但留下了我试图摆脱的空白。我一定是做错了什么,因为我不能成为第一个在堆栈溢出时遇到这个问题的人。 Tableviews 已经存在多年... 你能发张图片让我们更清楚地了解吗? 完成。我将标题涂成红色以突出显示不需要的空白。更改 heightForRowAt 不会影响此空白区域。 空白似乎是footerView的问题。您是否将 footerView 的高度设置为 minimumNonZeroMagnitude?​​span> 【参考方案2】:

tableView.sectionFooterHeight = 0.0 修复了这个问题。

【讨论】:

以上是关于使用 .grouped tableview 时,摆脱在我的标题中添加的空间的主要内容,如果未能解决你的问题,请参考以下文章

uitableView group模式下的间距问题

求问QT creator的table view一些问题……

iOS -tableView在Grouped样式下去掉section分割线

关于TableView上有一段留白的解决方法

IOS tableView的基本使用

uitableview group 样式为啥行高变大