Jos*_*nor 10 uitableview ios swift
我想向后加载我的tableview,这意味着tableView从底部加载并向上滚动以查看更多内容.
首先,我尝试反转dataSource数组.内容相反,但仍然从顶部加载,用户必须向下滚动才能看到更多内容.
然后我尝试从viewWillAppear的底部加载tableView:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if (self.conversationTableView.contentSize.height > self.conversationTableView.frame.size.height) {
let offset = CGPoint(x: CGFloat(0), y: CGFloat(self.conversationTableView.contentSize.height - self.conversationTableView.frame.size.height))
self.conversationTableView.setContentOffset(offset, animated: true)
}
}
Run Code Online (Sandbox Code Playgroud)
然而,这种尝试不起作用,因为我异步下载图像(我正在使用NSTextAttachment,它在每个单元格中填充我的UITextView).每当我的占位符被替换为真实下载的图像时,它会导致tableView内容偏移移位(占位符的图像高度几乎总是小于下载图像的高度).因此,以这种方式设置contentOffset不起作用.
如何从底部加载tableView并向上滚动以查看更多内容?
Jos*_*nor 47
最好的方法是翻转tableView和它的单元格.这样,如果一个单元格要改变大小(由于异步下载之类的东西),你仍然会从tableview的底部加载而不是偏移.
//In ViewDidLoad
conversationTableView.transform = CGAffineTransform(rotationAngle: -(CGFloat)(Double.pi));
//In cellForRowAtIndexPath
cell.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi));
Run Code Online (Sandbox Code Playgroud)
另外:如果你有一个headerView,只需将其设置为tableView.tableFooterView:
var tableHeaderView = UIView(frame: headerFrame)
tableHeaderView.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi));
conversationTableView.tableFooterView = tableHeaderView
Run Code Online (Sandbox Code Playgroud)
如果你有一个footerView和headerView,只需将标题设置为页脚,将页脚设置为标题.
编辑:如果要翻转滚动指示器:
conversationTableView.scrollIndicatorInsets = UIEdgeInsetsMake(0.0, 0.0, 0.0, conversationTableView.bounds.size.width - 8.0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7271 次 |
| 最近记录: |