ios UICollectionView不加载所有可见单元格

yduiuuwa  于 2023-03-09  发布在  iOS
关注(0)|答案(1)|浏览(137)

我有一个UICollectionView,它有一些标题和(不同大小的)单元格,我遇到的问题是它看起来没有加载所有需要的单元格来填充可见区域,而是在我稍微滚动一下之后才加载最新的单元格:

如果我删除标头,问题就没有了,这让我怀疑我的collectionView(_:layout:referenceSizeForHeaderInSection:)方法是罪魁祸首,但即使我返回固定大小,它仍然表现出相同的问题。
有人能帮助我理解这里发生了什么吗?Here是一个演示项目,如果有人感兴趣的话。

e4eetjau

e4eetjau1#

下面这行:

flowLayout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize

您没有向流式布局提供任何有关项目大小的提示
因此,流式布局实质上是说:

  • 我需要另一“排”细胞
  • 单元格 * 可以与集合视图 * 一样宽
  • 所以,只需要一个细胞

开始滚动时,当前可见单元格已定义宽度,因此流式布局要求输入另一个单元格。
您可以提供实际估计的项目大小,也可以覆盖viewDidAppear()并在此处执行此操作:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    if let fl = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
        // let's use estimated width of 40% so we know we can fit 2 cells per row
        //  use a "reasonable" value for the height
        fl.estimatedItemSize = .init(width: collectionView.frame.width * 0.4, height: 280.0)
    }
}

相关问题