UITableView 与单元格下方的 UIView

Posted

技术标签:

【中文标题】UITableView 与单元格下方的 UIView【英文标题】:UITableView with a UIView underneath the Cells 【发布时间】:2013-12-12 02:03:36 【问题描述】:

我有一个 UITableView,在自定义单元格下方(在 IB 中)我插入了一个 UIView。 UIView 在调用 viewDidLoad() 时被设置为隐藏,并且仅在 UITableView 中没有数据时显示。这很好用,符合我的目的。

问题是即使 UIView 被隐藏,UITableView 上的滚动也会认为视图存在。即垂直滚动,滚动远低于最后一个单元格,覆盖 UIView 存在的区域 - 即使它是空白且没有显示任何内容。

我试图隐藏 UIView 但这也无济于事。如何让滚动不扩展到 UIView 覆盖的区域?

编辑:

左边的图片是 IB 的样子。我添加了一个 UIView 作为 TableView 的子视图。右图是最后一个单元格下方的大滚动空间。

预期行为:当视图被隐藏时,滚动视图只滚动到最后一个单元格。

【问题讨论】:

尝试将视图的高度设为 0 而不是隐藏它。 重要区别:您说您的视图“低于”IB 中的自定义单元格。你不会把它当作另一个原型细胞吧? 另外,您能否澄清一下“垂直滚动,滚动远低于最后一个单元格,覆盖 UIView 存在的区域 - 即使它是空白且没有显示任何内容”?看起来你可能在里面放了一个不属于的词。 @ErikKerber 是的,它不是另一个原型单元。它是 UITableView 内的子视图。我的意思是滚动动作允许用户垂直滚动过去最后一个单元格(相当数量)。如果我降低视图的高度,滚动量会减少,这表明尽管视图被隐藏,但滚动边界已设置为覆盖 UIView。 @wholly_cow 我认为此时您最好提供您所看到的与您所期望的内容的屏幕截图。只要您的视图只是 UITableView 的子视图,并且您没有手动尝试更改 contentSize,那么该视图不应影响 contentSize 或可滚动性。 【参考方案1】:

如果您的视图仅在没有单元格时显示,您可以将其添加到您的 UITableView 上(或者如果您的 UITableView 的背景清晰,则将其添加到后面)并在有单元格要显示时隐藏它。请务必将您的视图添加为 UITableView 的兄弟视图,而不是 UITableView 的子视图。

【讨论】:

IB 不允许我将其作为同级添加到 UITableView。它只接受它作为 UIViewController 的兄弟或 UITableView 的孩子 我做了一个快速测试,并将视图添加为 tableView 的子项也可以。在我的测试中,我使用myView.center = self.tableView.center 将视图定位在tableView 的中心。 奇怪 - 你能看看我的截图吗?你的看起来像左边的 IB 吗? 你确定你没有把你的视图作为tableView的页脚视图吗?添加视图作为 UITableView 的子视图不应该对 contentSize 产生任何影响,因为您的视图基本上是浮动在内容上的。一定是发生了什么蠢事。 你知道 UITableView 的自动滚动是如何计算它的滚动边界的吗?我想知道在隐藏 UIView 之后是否可以要求它重新计算其边界?

以上是关于UITableView 与单元格下方的 UIView的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 在单元格下方扩展不同的背景颜色

UITableView 单元格布局与 iPhone 12 pro 和 promax 的区别

UITableView 与导航栏不对齐(单元格在旋转时卡在下面)

向静态 UITableView 添加行:获取 NSRangeException

如何在 UITableView 中实现类似 UIImageView 的延迟加载

点击或长按单元格下方