从底部启动 UITableView

Start UITableView from the bottom

我是 Objective-C 编程的新手,我正在制作一个需要 Table 视图从底部到顶部加载的应用程序,类似于消息传递应用程序。我已经尝试在 Google 上搜索关于此的内容,但我对所使用的代码仍然有些困惑。提前致谢!

UITableView 根据屏幕上可见的内容轮询其 dataSource 单元格。所以,你的问题的关键是你想先显示 table 的底部。

为此,您可以调用 [tableView setContentOffset:CGPointMake(0, CGFLOAT_MAX)];,这会将 UITableView 滚动到底部。

请记住,调用的位置可能因您是否使用自动版式而异。

有关详细信息,请参阅 How to scroll to the bottom of a UITableView on the iPhone before the view appears

这是我在设计聊天机器人时所做的:

1 - 在 IB 中添加一个 UItableView 并设置其约束。

2 - 当我添加一个新单元格(消息)时,我会更改 UITableViewY 位置。例如,当第一条消息添加到数据源数组时,我会计算该单元格的高度,因此如果该单元格的高度为 50,我将设置我的 UITableViewY 位置] 作为 UITableView 的当前高度减去要添加的单元格的高度。这使得消息看起来像是从底部添加的。

3 - 在第2步重复上述循环,直到你的UITableViewY位置刚好在屏幕顶部(或要求的位置)下方,在这种情况下你没有不再需要将减去的值设置为 Y 位置(否则 table 视图将离开屏幕)。添加一个 if 条件,检查计算值是否比所需位置 lower,如果是,则自己设置 Y 位置(因此 table 固定在顶部)。

4 - 还要确保始终使用 scrollToRowAtIndexPath 滚动到 UITableView 的最后一个单元格。

希望这对您有所帮助。

另一种解决方法是翻转 UITableView 的 Y 轴

取自:Igor Kulman

我找到的最佳解决方案是翻转 UITableView 的 Y 轴。它为您提供了先前解决方案的所有优点,但您不必处理滚动条。它停留在正确的位置,因为只有内容被翻转了。 所以翻转 UITableView

tableView.transform = CGAffineTransform(scaleX: 1, y: -1)

并以同样的方式翻转你的单元格

cell.contentView.transform = CGAffineTransform(scaleX: 1, y: -1)