【发布时间】:2015-01-04 08:29:49
【问题描述】:
我是 Objective-C 编程的新手,我正在制作一个需要从底部到顶部加载表格视图的应用程序,类似于消息传递应用程序。我试过在谷歌上搜索这个,但我仍然对使用的代码有点困惑。提前致谢!
【问题讨论】:
-
动态设置tableview框架怎么样?
标签: ios objective-c uitableview
我是 Objective-C 编程的新手,我正在制作一个需要从底部到顶部加载表格视图的应用程序,类似于消息传递应用程序。我试过在谷歌上搜索这个,但我仍然对使用的代码有点困惑。提前致谢!
【问题讨论】:
标签: ios objective-c uitableview
UITableView 根据屏幕上可见的内容轮询其dataSource 中的单元格。所以,问题的关键是你想先显示表格的底部。
为此,您可以调用[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 - 当我添加一个新单元格(消息)时,我会更改UITableView 的Y 位置。例如,当第一条消息添加到数据源数组时,我会计算那个单元格的高度,所以如果那个单元格的高度是 50,我会将我的UITableView 的Y 位置设置为当前UITableView 的高度减去正在添加的单元格的高度。这使它看起来像是从底部添加消息。
3 - 在步骤 2 中重复上述循环,直到您的 UITableView 的 Y 位置刚好在屏幕顶部下方(或所需位置),在这种情况下,您不再需要设置减去值作为Y 位置(否则表格视图将离开屏幕)。添加一个if 条件,检查计算值是否为lower 而不是所需位置,如果是,则只需自己设置Y 位置(因此表格固定在顶部)。
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)
【讨论】: