我有全屏单元格的自定义布局。从左侧删除单元格(当时不可见)时,UICollectionView跳至下一个单元格。就像当前单元格位于索引4一样,当左侧的单元格被删除时,下一个单元格现在具有索引4,并立即滚动到下一个单元格。分3个步骤进行描述(A是需要全屏显示的单元格,x将被删除,o其他单元格,large字母是全屏显示):
但必须保留此oooAoo
这里是我的解决方案,如果它可以帮助任何人,没有找到如何原生获得所需偏移的方法,那么只需在reloadData()之后将contentOffset滚动到所需位置即可。
var currentCell: MyCollectionViewCell? {
return (visibleCells.sorted { $0.frame.width > $1.frame.width }.first) as? MyCollectionViewCell
}
//-----------------------------------------
//some model manipulating code, removing desired items here...
let currentList = currentCell?.parentList
reloadData()
if let list = currentList, let index = self.lists.firstIndex(of: list) {
self.scrollToItem(at: IndexPath(row: index, section: 0), at: .centeredHorizontally, animated: false)
}