UITableView 滚动到内容大小内的部分

Posted

技术标签:

【中文标题】UITableView 滚动到内容大小内的部分【英文标题】:UITableView scroll to section within content size 【发布时间】:2012-07-03 10:03:17 【问题描述】:

我有一个包含 3 个部分的表格视图,“昨天、今天、明天”。当表格视图启动时,我希望“今天”部分成为最上面的可见部分。因此我使用这个函数:

[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1] atScrollPosition:UITableViewScrollPositionTop animated:NO];

当表格视图的填充超出其内容大小时,这可以正常工作,因此它是可滚动的。问题是,例如,每个部分仅包含 1 个单元格。然后整个表格将适合屏幕,因此上面的代码不会触发,因为它无论如何都会橡皮筋回来。

有人知道解决办法吗?

【问题讨论】:

认为你需要增加表格视图的内容大小才能滚动 是的。这样做的问题是您将能够滚动“太远”,并且滚动指示器无法很好地显示有多少内容...... 是的,这是正确的,但通过适当的计算,您可以调整内容大小,以便在某些条件下使用上述方法。 【参考方案1】:

尝试设置表格的 edgeInsets。这将按照您指定的偏移量开始绘制表格。

UIEdgeInsets edgeInsets = UIEdgeInsetsMake(someValue, 0, 0, 0);
self.tableView.contentInset = edgeInsets;

您在哪里计算 someValue 以将表格降到您想要的位置。

【讨论】:

感谢您的回答。我已经尝试过了,它只适用于内容大于实际表格框架的表格。内容较小的表格(例如具有 3 个单元格的表格)似乎完全忽略了边缘插图。【参考方案2】:

我自己回答这个问题,因为没有任何想法。

据我了解,这是不可能实现的。如果可以,表格视图将尝试滚动到该行。使其工作的唯一方法是将内容大小设置为足够大以使表格滚动。

【讨论】:

以上是关于UITableView 滚动到内容大小内的部分的主要内容,如果未能解决你的问题,请参考以下文章

动态调整UITableView的大小,该大小将显示为不可滚动的内容列表

关闭另一个视图后 UITableView 滚动内容大小不正确

显示和滚动验证错误到 UITableView 内的第 n 个 UITextfield

带有 AutoLayout 的 UIScrollView 内的 UITableView 动态内容大小高度

切换到 UITableView 控制器并滚动到部分的开头

拖动滚动 UITableView 本身而不是其内容