Fix crash when TimelineViewController tries to apply snapshot while not visible

This commit is contained in:
Shadowfacts 2022-12-05 17:17:34 -05:00
parent eac2a9b19f
commit fc8fcb76fd
1 changed files with 7 additions and 5 deletions

View File

@ -522,10 +522,12 @@ class TimelineViewController: UIViewController, TimelineLikeCollectionViewContro
private func applySnapshot(_ snapshot: NSDiffableDataSourceSnapshot<Section, Item>, maintainingScreenPosition offsetFromTop: CGFloat, ofItem itemToMaintain: Item) {
// use a snapshot of the collection view to hide the flicker as the content offset changes and then changes back
let snapshotView = collectionView.snapshotView(afterScreenUpdates: false)!
snapshotView.layer.zPosition = 1000
snapshotView.frame = view.bounds
view.addSubview(snapshotView)
let snapshotView = collectionView.snapshotView(afterScreenUpdates: false)
if let snapshotView {
snapshotView.layer.zPosition = 1000
snapshotView.frame = view.bounds
view.addSubview(snapshotView)
}
dataSource.apply(snapshot, animatingDifferences: false) {
if let indexPathOfItemToMaintain = self.dataSource.indexPath(for: itemToMaintain) {
@ -558,7 +560,7 @@ class TimelineViewController: UIViewController, TimelineLikeCollectionViewContro
self.collectionView.contentOffset.y -= offsetFromTop
}
snapshotView.removeFromSuperview()
snapshotView?.removeFromSuperview()
}
}