reloadData () в UICollectionView изменяет contenteOffset с динамическими ячейками - PullRequest
0 голосов
/ 25 сентября 2018

Я только что обновил свое приложение для 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(), но тоже не работает.

Может кто-нибудь объяснить мне, почему и дать мне потенциальное решение?

Спасибо

...