日历的 UICollectionView 中有多少个单元格开始? (即具有无限数量的日期)

how many cells to commence with in a UICollectionView for a Calendar? (i.e. with infinite number of dates)

日历的 UICollectionView 中有多少个单元格开始?那就是我的理解是:

  1. UICollectionView 的优点在于它只实例化单元格 需要显示,然后
  2. 您仍然需要将单元格添加到集合视图

如果说您的视图只显示 10 个单元格,但您有无限个单元格(例如在日历中向上和向下滚动日期),那么最佳做法是什么?您是否为 100 个日期输入 100 个单元格(例如感兴趣的开始日期的任何一侧 50 个),然后手动跟踪您何时到达这些边缘之一,然后添加更多?这会让 UICollectionView 框架无法自行跟踪这一点感到羞耻,不是吗?

因此(抱歉)所以总体问题是:

  1. 您应该在集合视图中创建多少个单元格(日期)。因此是否应该限制为 100
  2. UICollectionView 是否不支持在日历类型的情况下自动为您添加更多单元格,如果用户想要继续向前或向后滚动,日期是无限的
  3. 对 UICollectionViewLayoutAttributes 的缓存策略有什么影响吗?

这取决于在一个屏幕上可视化了多少。如果是一个月,我会在前一个月和后一个月。如果只是一天,前一天,后一天。然后使用这个无限滚动技巧。外面有很多例子。我没有通读以下 link,但图片很好地形象化了这个想法:

Building a Infinitely-Scrolling Gallery With a UICollectionView

Github 上有一个基于 UICollectionView 的日历项目 https://www.cocoacontrols.com/controls/rsdayflow

我在生产项目中使用过这个组件。 您可以轻松更改它的外观,因为每一天都是一个 uicollectionviewcell。

本项目基于https://github.com/evadne/DayFlow 这可以作为创建所需内容的良好基础。

如果你想建立自己的日历,它可以帮助你找到对你问题的回应:代码很容易理解,我认为实现非常简洁