Я только что обновил свое приложение для iOS 12 и обнаружил эту проблему с моим collectionView.Я использую ячейки самоконтроля таким образом в моем подклассе collectionView:
if let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
layout.estimatedItemSize = CGSize(width: collectionView.frame.width, height: 44)
layout.itemSize = UICollectionViewFlowLayout.automaticSize
}
Когда я вызываю reloadData (), contentOffset меняется там, где это не нужно.Я пробовал обходной путь, который отлично работал на iOS 11, переопределяя reloadData ():
override func reloadData() {
let oldOffset = contentOffset
super.reloadData()
layoutSubviews() // This line do the job with iOS 11.
self.setContentOffset(oldOffset, animated: false)
}
Но на iOS 12 он больше не работает, и contentOffset полностью нарушается при вызове reloadData () Я также пытался invalidateLayout()
вместо layoutSubviews()
, но тоже не работает.
Может кто-нибудь объяснить мне, почему и дать мне потенциальное решение?
Спасибо