UICollectionView 加载除可见单元格之外的更多单元格
UICollectionView loads more cells other than visible ones
我有一个 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。多余的单元格停止加载。
在执行自动调整单元格大小时,我们给出 estimatedItemSize。
在对 estimatedItemSize 使用 UICollectionViewFlowLayoutAutomaticSize 时,collectionview 会尝试加载可数数量的单元格(可见和不可见)并获取估计大小。
如果给出适当的 CGSize(估计值),额外的单元格(不可见)将被加载得更少。因此,您的估计大小越接近,加载的不可见单元就越少。
我有一个 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。多余的单元格停止加载。
在执行自动调整单元格大小时,我们给出 estimatedItemSize。
在对 estimatedItemSize 使用 UICollectionViewFlowLayoutAutomaticSize 时,collectionview 会尝试加载可数数量的单元格(可见和不可见)并获取估计大小。
如果给出适当的 CGSize(估计值),额外的单元格(不可见)将被加载得更少。因此,您的估计大小越接近,加载的不可见单元就越少。