【问题标题】:UICollectionView nested in a UIScrollView loads all cells at once嵌套在 UIScrollView 中的 UICollectionView 一次加载所有单元格
【发布时间】:2021-07-06 15:08:29
【问题描述】:

我有几个很长的collectionViews,都嵌套在一个scrollView 中。 由于预取范围与滚动视图有关,所有单元格在滚动视图上都是“可见的”,即使它们中的大多数在屏幕上根本不可见。 因此,当调用 reloadData() 时,它会重新加载所有单元格,而不是仅重新加载可见单元格。它最终会导致 UI 冻结。

有没有办法只加载屏幕上真正可见的单元格?

【问题讨论】:

    标签: swift uicollectionview uiscrollview


    【解决方案1】:

    做到这一点的“最佳”方法是将所有内容放在一个 UITableView 中,该 UITableView 将 UICollectionViews 作为单元格。这听起来很可怕(而且,它不是很好),但它确实是唯一“干净”的方法。

    让 UITableView 充当 ScrollView,其他一切都应该可以正常工作,总而言之,它应该更快,并且不应该锁定 UI。

    【讨论】:

    • 谢谢!然后——“可见”的 collectionView 单元格将根据 UITableViewCell 计算,这意味着即使屏幕上只有一个单元格可见,它内部的整个 collectionView 也会被加载,而不仅仅是可见单元格。我对吗?如果是这样,那对我来说还不够好:即使是一个 collectionView 也需要一次全部加载。