我是Objective-C编程的新手,我正在开发一个需要Table View从底部加载到顶部的应用程序,类似于消息传递应用程序。我试过在谷歌上搜索这个,但我仍然对使用的代码感到困惑。提前致谢!
UITableView
根据屏幕上可见的内容轮询其dataSource
细胞。因此,问题的关键是您希望首先显示表格的底部。
为了做到这一点,你可以调用[tableView setContentOffset:CGPointMake(0, CGFLOAT_MAX)];
,它将UITableView
滚动到底部。
请记住,您拨打电话的位置可能会因您是否使用Autolayout而有所不同。
有关更多信息,请参阅How to scroll to the bottom of a UITableView on the iPhone before the view appears
这是我设计聊天机器人时所做的事情:
1 - 在IB中添加UItableView并设置其约束。
2 - 当我添加一个新单元格(消息)时,我会改变Y
的UITableView
位置。例如,当第一条消息被添加到数据源数组时,我会计算该单元格的高度,所以如果该单元格的高度为50,我会将Y
的UITableView
位置设置为UITableView
的当前高度减去要添加的单元格的高度。这使得它看起来像是从底部添加消息。
3 - 在步骤2中重复上述循环,直到Y
的UITableView
位置正好低于屏幕顶部(或所需位置),在这种情况下,您不再需要将减去的值设置为Y
位置(否则tableview将关闭屏幕)。添加一个if
条件,检查计算值是否为lower
而不是所需位置,如果是,则自己设置Y
位置(因此表格固定在顶部)。
4 - 还要确保始终使用UITableView
滚动到scrollToRowAtIndexPath
的最后一个单元格。
希望这可以帮助。
解决这个问题的另一种方法是翻转UITableView的Y轴
取自:Igor Kulman
我找到的最佳解决方案是翻转UITableView的Y轴。它为您提供了先前解决方案的所有优点,但您无需处理滚动条。它保持在正确的位置,因为只翻转了内容。所以翻转UITableView
tableView.transform = CGAffineTransform(scaleX: 1, y: -1)
并以同样的方式翻转你的细胞
cell.contentView.transform = CGAffineTransform(scaleX: 1, y: -1)