Вот мое решение, если оно может кому-нибудь помочь, не нашел, как добиться желаемого смещения изначально, поэтому просто прокручивал contentOffset до нужной позиции сразу после reloadData ():
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)
}
- currentCell является вычисляемым свойством, возвращает необязательную среднюю ячейку. Определите, какая ячейка является самой большой, благодаря пользовательской логике потока c.
- parentList - элемент модели, я могу сравнить ячейку по ней, чтобы упростить жизнь. Я проверяю, какой список был прикреплен к ячейке перед reloadData ().