具有动态内容的 UICollectionView(每个单元格的视图数量可变)

UICollectionView with dynamic content(variable amount of views for each cell)

我想创建一个集合视图,每个单元格如下图所示:

问题是每个单元格都会有数量可变的“事件”。一个可以只有 2 个,另一个可以有 10 个左右。

我找不到使这成为可能的方法,主要是因为我认为我必须制作一个 UITableView,其中每个单元格都是一个 UICollectionView。但是如何为每个单元格设置不同的高度。而且我认为这也是一种矫枉过正。

要走的路是什么?谢谢!

基本上你有几个选择:

  • 创建完全自定义的布局 class - 的子项 UICollectionViewLayout(UICollectionViewFlowLayout)(很可能你不会这样做)
  • 如果您正在使用 UICollectionViewFlowLayout 实现 UICollectionViewDelegateFlowLayout 协议,其中包含调整单元格大小的方法:
func collectionView(_ collectionView: UICollectionView,
                    layout collectionViewLayout: UICollectionViewLayout,
                    sizeForItemAt indexPath: IndexPath) -> CGSize

并根据日期的事件数量计算单元格的高度

  • 创建两种单元格 — 一种用于包含日期和一个事件(一天中最重要的事件)的单元格,另一种用于仅事件(可能还有其他一些,例如分隔符或其他内容,具体取决于 UI)。这两个单元格都有固定的高度,因此使用 UICollectionViewDelegateFlowLayout 中的方法,您可以为单元格提供正确的尺寸。

p.s 在所有情况下,您首先要考虑的是 — 您的模型是什么,下一步是什么(例如 — 是否会有公开活动动画,你可以滑动以删除事件,你可以与每个事件交互,等等)——取决于你必须在第二个和第三个选项之间做出选择