我正试图弄清楚如何通过xcode/swift中的后台线程滚动我的tableview。下面是我目前拥有的代码:
func startBackgroundScrollingThread() {
DispatchQueue.global(qos: .background).async {
while self.scrollingMode {
for row in 0..<self.list.count {
DispatchQueue.main.async {
if self.scrollingMode {
Thread.sleep(forTimeInterval: 0.2)
let indexPath = IndexPath(row: row, section: 0)
self.tableView.scrollToRow(at: indexPath, at: .none, animated: true)
}
}
Thread.sleep(forTimeInterval: 0.2)
}
for row in (0..<self.list.count).reversed() {
DispatchQueue.main.async {
if self.scrollingMode {
Thread.sleep(forTimeInterval: 0.2)
let indexPath = IndexPath(row: row, section: 0)
self.tableView.scrollToRow(at: indexPath, at: .none, animated: true)
}
}
Thread.sleep(forTimeInterval: 0.5)
}
}
}
}
字符串
这段代码有点工作,但它不是一个平滑的滚动。这是非常janky。我最理想的是希望它慢慢地沿着视图走下去,然后一遍又一遍地向上备份。我感谢任何帮助!
1条答案
按热度按时间lvjbypge1#
注解此行
字符串
在
DispatchQueue.main.async
内部,因为它使主线程睡眠一段时间,但您只需要使后台线程只做t睡眠**编辑:**不使用
scrollToRow
可以想到contentOffset
型