如何滚动到 UITableView 或 UICollectionView 中的最后一个单元格之外

Posted

技术标签:

【中文标题】如何滚动到 UITableView 或 UICollectionView 中的最后一个单元格之外【英文标题】:How to scroll beyond the last cell in a UITableView or UICollectionView 【发布时间】:2019-07-14 16:39:27 【问题描述】:

我想要一个 tableView(和 collectionView)滚动到最后一个单元格之外。 也就是说,当滚动到最后一个单元格时,我希望 tableView 继续滚动到最后一个单元格之外 200 点。

我试过了:

tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 200, right: 0)

但是这段代码的行为就像改变框架一样(整个 tableView 向上移动 200 点)。这不是我想要的。

【问题讨论】:

【参考方案1】:

在表格视图中,您可以添加所需高度的视图作为表格视图的页脚。

let footer = UIView(frame: CGRect(x: 0, y: 0, width: 320, height: 200))
self.tableView.tableFooterView = footer

根据外观,您可能需要设置页脚视图的背景颜色。

对于集合视图,您可以为集合视图的最后一个部分设置节页脚。

【讨论】:

【参考方案2】:

收藏视图

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets 
    // Section Insets

没有直接的方法可以使用UITableView 执行此操作,但您可以使用tableView(_ tableView: UITableView, viewForFooterInSection section: Int) 创建页脚视图并使用tableView(_ tableView: UITableView, heightForFooterInSection section: Int) 为最后一部分添加额外的高度,从而产生滚动效果。

【讨论】:

这个方法也提升了collectionView,而不是增加我想要的可滚动区域。 你想增加可滚动区域是什么意思?喜欢增加滚动视图的框架大小? 是的,类似的。我有一个全屏的 tableView,但底部也有一个重叠的按钮。所以最后一行出现在这个按钮的后面。我想要的是让 tableView 向下滚动更多,以便最后一个单元格出现在按钮上方。 您可以通过为最后一部分创建页脚视图来做到这一点。使其成为表格视图的宽度,并手动将高度设置为您想要的任何值。这可以是一个清晰的视图,使它看起来像表格视图过度滚动。【参考方案3】:

使用尺寸检查器的简单方法。

在 xib 或故事板中选择集合视图,转到大小检查器。 将页脚大小中的值设置为 30 40 或根据您的需要。 运行它。

滚动现在超出集合视图的实际高度。

【讨论】:

以上是关于如何滚动到 UITableView 或 UICollectionView 中的最后一个单元格之外的主要内容,如果未能解决你的问题,请参考以下文章

UITableView滚动到不需要的索引或位置

UITableView,如何修复页脚,使其在滚动时永远不会向上或向下移动?

如何检测 UITableView 滚动?

如何滚动uitableview和顶部的部分标题,可见并滚动到

即使在用户可见之前,如何将 UITableView 滚动到所需的行?

如何使按下状态栏滚动到任何 UITableView 的顶部?