我有一个UICollectionView,它有2k+记录。在任何时候,只有6-7行将是可见的,我正在使用可重用的单元格。一切都很好。
但是,当我在cellForRowAtIndexPath中创建控制台日志时,最初80+行将被加载。之后,它再次加载前7行,并正确地只加载可见的单元格。
为什么它最初加载80+行。这使得初始加载稍有滞后。
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return results.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
print("Cell For Row -> \(indexPath)")
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ResultCell", for: indexPath) as! ResultCell
cell.data = result[indexPath.item]
return cell
}更新:
我用的是自动大小的电池。所以我把estimatedItemSize定义为UICollectionViewFlowLayoutAutomaticSize
我尝试定义一个正确的CGSize而不是UICollectionViewFlowLayoutAutomaticSize。额外的细胞停止加载。
发布于 2017-11-02 07:39:41
在执行自动大小单元时,我们给出了estimatedItemSize。
在使用UICollectionViewFlowLayoutAutomaticSize进行estimatedItemSize时,集合视图尝试加载可数个单元格(可见和不可见)并获得估计的大小。
如果给定适当的CGSize (估计值),则额外的单元格(不可见)将被加载得更少。因此,您估计的大小越近,加载的不可见单元就越少。
https://stackoverflow.com/questions/47068210
复制相似问题