Я создаю UICollectionView
с ячейками динамической высоты и использую свойство estimatedItemSize
для UICollectionViewFlowLayout
( Справочник по Apple Docs ).
Хотя я заметил, что после установки свойства estimatedItemSize
мой метод prefetchItemsAt
для делегата UICollectionViewDataSourcePrefetching
не вызывается.
func collectionView(_ collectionView: UICollectionView, prefetchItemsAt indexPaths: [IndexPath])
Если я не установил оценочный размер элемента, предварительная выборка снова начинает работать. Это известное поведение или я делаю что-то не так? Пожалуйста, помогите.
Пример кода:
class CollectionViewController: UICollectionViewController {
var layout: UICollectionViewFlowLayout = {
let layout = UICollectionViewFlowLayout()
let width = UIScreen.main.bounds.size.width
layout.estimatedItemSize = CGSize(width: width, height: 100)
return layout
}()
override func viewDidLoad() {
super.viewDidLoad()
if #available(iOS 10.0, *) {
collectionView?.prefetchDataSource = self
}
collectionView.collectionViewLayout = layout
// Register cell classes
self.collectionView.register(UINib.init(nibName: "CollectionViewCell", bundle: nil), forCellWithReuseIdentifier: reuseIdentifier)
}
}
extension CollectionViewController: UICollectionViewDataSourcePrefetching {
// MARK: UICollectionViewDataSourcePrefetching
func collectionView(_ collectionView: UICollectionView, prefetchItemsAt indexPaths: [IndexPath]) {
// Fetch more cells
print("prefetchItemsAt called.")
}
}