我刚刚更新了适用于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会在不需要的地方进行更改。我通过覆盖reloadData()尝试了一种在iOS 11上运行良好的解决方法:
override func reloadData() {
let oldOffset = contentOffset
super.reloadData()
layoutSubviews() // This line do the job with iOS 11.
self.setContentOffset(oldOffset, animated: false)
}
但是在iOS 12上它不再起作用,并且在调用reloadData()时contentOffset被完全破坏了
我还尝试了invalidateLayout()
而不是layoutSubviews()
,但也无法正常工作。
有人可以向我解释原因并给我潜在的解决方案吗?
谢谢