【发布时间】:2018-03-23 04:08:59
【问题描述】:
我使用下面的代码来更新我的tableView
func scrollViewDidScroll(_ scrollView: UIScrollView) {
//Load more cell
if tableView.contentOffset.y < 100 {
let beforeTableViewContentHeight = tableView.contentSize.height
let beforeTableViewOffset = tableView.contentOffset.y
let moreDataArray = getAllMessages()
for message in moreDataArray.reversed() {
dataArray.insert(message, at: 0)
}
DispatchQueue.main.async {
self.tableView.reloadData()
self.tableView.layer.layoutIfNeeded()
let insertCellHeight = beforeTableViewOffset + (self.tableView.contentSize.height - beforeTableViewContentHeight)
let newOffSet = CGPoint(x: 0, y: insertCellHeight)
self.tableView.setContentOffset(newOffSet, animated: false)
}
}
}
但是当插入单元格和reloadData()时,滚动惯性会停止。
whatsapp 之类的如何插入单元格到顶部保持偏移和滚动惯性。
前 5 秒,table 很短,当我快速向上滚动和手指伸出时(如 android 滚动状态 scroll_state_fling),顶部插入更多内容,同时可以保持偏移和滚动惯性,太神奇了,我该怎么做?
【问题讨论】:
-
将
self.tableView.setContentOffset(newOffSet, animated: false)更改为self.tableView.contentOffset = newOffSet -
谢谢回复,我试了一下,好像没什么区别,滚动惯性还是停止了。
标签: ios swift uiscrollview