Estoy creando un UICollectionView con celdas de altura dinámica y usando la propiedad estimatedItemSize en UICollectionViewFlowLayout ( referencia de Apple Docs ).
Sin embargo, me di cuenta de que una vez que configuré la propiedad estimatedItemSize , mi método prefetchItemsAt para el delegado UICollectionViewDataSourcePrefetching no se llama.
func collectionView(_ collectionView: UICollectionView, prefetchItemsAt indexPaths: [IndexPath])
Si no configuro el tamaño estimado del artículo, la búsqueda previa comienza a funcionar nuevamente. ¿Es este un comportamiento conocido o estoy haciendo algo mal aquí? Por favor ayuda.
Código de muestra:
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.") } }