gpt4 book ai didi

ios - 自动滚动到具有 UITableViewAutomaticDimension 行高的表格底部? - swift ,iOS 8+

转载 作者:搜寻专家 更新时间:2023-10-31 22:21:48 24 4
gpt4 key购买 nike

通常,在一个表格中,可以使用下面的代码实现自动滚动到底部:

let indexPath = NSIndexPath(forRow: rowCount - 1, inSection: 0)
self.tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: .Bottom, animated: true)

但是,当我将它设置为在 viewDidLoad() 中使用自动行高时,如下所示,上面的代码仅向下滚动表格的大约一半(取决于行高和行数 - 它只发生在多行时比 estimatedRowHeight 大得多)。

tableView.estimatedRowHeight = 50
tableView.rowHeight = UITableViewAutomaticDimension

如何在使用 UITableViewAutomaticDimension 的同时以编程方式向下滚动到表格底部?

最佳答案

在使用自动调整单元格大小将行插入表格 View 底部时,我遇到了一个非常相似的问题,这是我能找到的唯一解决方法。它不是很漂亮,但可以完成工作(在 iOS 8 和 9 上测试过)。在插入时:

// compute the insertion index as the last one
let insertionIndex = NSIndexPath(forRow: elements.count - 1, inSection: 0)
// delete from the top, insert at the bottom
tableView.beginUpdates()
tableView.deleteRowsAtIndexPaths(deletionsIndexes, withRowAnimation: .Top)
tableView.insertRowsAtIndexPaths([insertionIndex], withRowAnimation: .Fade)
tableView.endUpdates()
// scroll to the last row, position will be wrong
tableView.scrollToRowAtIndexPath(lastIndex, atScrollPosition: .Bottom, animated: false)
// scroll back to the one before, the actual scrolling will be done after inserting the cell
if elements.count > 1 {
let prevIndex = NSIndexPath(forRow: lastIndex.row - 1, inSection: 0)
self.tableView.scrollToRowAtIndexPath(prevIndex, atScrollPosition: .Bottom, animated: false)
}

如您所见,我们滚动到最后一行只是为了触发行插入然后滚动回之前的行(全部没有动画)以避免任何可见的滚动。然后在插入单元格时:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

[...]

let cell = try configuredCell(forElement: element)
dispatch_async(dispatch_get_main_queue()) {
let lastIndex = NSIndexPath(forRow: self.elements.count - 1, inSection: 0)
// when inserting the last element we do the actual animated scrolling
if indexPath.row == self.elements.count - 1 {
tableView.scrollToRowAtIndexPath(lastIndex, atScrollPosition: .Bottom, animated: true)
}
}
return cell
}

关于ios - 自动滚动到具有 UITableViewAutomaticDimension 行高的表格底部? - swift ,iOS 8+,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33318021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com