我正在使用集合视图,UICollectionView,它的工作非常棒...除了我无法滚动到任何特定项目。似乎总是滚动到“中间”是我最好的猜测。在任何情况下,无论我发送到scrollToItem似乎对滚动没有任何影响。我把它放在我的视图控制器的不同位置,但没有成功。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let lastIndex = IndexPath(row: messages.count-1, section: 0)
self.messagesView.scrollToItem(at: lastIndex, at: .bottom, animated: true)
}
答案 0 :(得分:22)
UICollection 视图在 iOS 14 中存在带有 scrollToItem 的错误。在 iOS 14 中,它仅在集合视图分页被禁用时才有效。 因此,如果我们必须手动和以编程方式滚动,我得到了一个解决方案。
特别适用于 iOS 14
self.collView.isPagingEnabled = false
self.collView.scrollToItem(at: IndexPath(item: scrollingIndex, section: 0), at: .left, animated: true)
self.collView.isPagingEnabled = true
答案 1 :(得分:4)
你可以尝试将滚动代码放在viewDidLayoutSubviews
中,在加载所有表格单元格之后应该调用它,这意味着你的messages.count应该可以工作。另外,请确保您在集合视图中只有一个部分。
override func viewDidLayoutSubviews
{
self.scrollToBottom()
}
func scrollToBottom() {
DispatchQueue.main.async {
let lastIndex = IndexPath(item: messages.count-1, section: 0)
self.messagesView.scrollToItem(at: lastIndex, at: .bottom, animated: true)
}
}