具有动态内容的 UICollectionView(每个单元格的视图数量可变)
Posted
技术标签:
【中文标题】具有动态内容的 UICollectionView(每个单元格的视图数量可变)【英文标题】:UICollectionView with dynamic content(variable amount of views for each cell) 【发布时间】:2020-06-25 20:34:15 【问题描述】:我想创建一个集合视图,每个单元格如下图所示:
问题是每个单元格都会有不同数量的“事件”。一个可以只有 2 个,另一个最多可以有 10 个左右。
我找不到使这成为可能的方法,主要是因为我认为我必须制作一个 UITableView,每个单元格都是一个 UICollectionView。但是如何为每个单元格设置不同的高度。而且我认为这也有点矫枉过正。
要走的路是什么?谢谢!
【问题讨论】:
【参考方案1】:基本上你有几个选择:
创建完全自定义的布局类 - 的子级 UICollectionViewLayout (UICollectionViewFlowLayout)(你很可能不会这样做) 如果您使用 UICollectionViewFlowLayout 实现 UICollectionViewDelegateFlowLayout 协议,该协议包含调整单元格大小的方法:func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
并根据您在某个日期的事件数量计算单元格的高度
创建两种单元格 — 一种用于带有日期和一种事件的单元格(一天中最高),另一种用于仅事件(可能是其他一些,如分隔符或其他内容,具体取决于 UI)。两个单元格的高度都是固定的,因此使用 UICollectionViewDelegateFlowLayout 中的方法可以为单元格提供正确的大小。p.s 在所有情况下,首先你要考虑的是——你的模型是什么,下一步是什么(例如——会有一个打开的事件动画,你可以滑动删除事件吗?您可以与每个事件进行交互吗,等等)-取决于您必须在第二个和第三个选项之间进行选择
【讨论】:
谢谢!我用了你的第三种方法。我创建了一个 UICollectionView 和两种类型的视图。第一个带有日期,另一个带有事件。并且只是根据需要添加事件或标题。当然,我的模型中的数据需要排序。以上是关于具有动态内容的 UICollectionView(每个单元格的视图数量可变)的主要内容,如果未能解决你的问题,请参考以下文章
具有动态高度和半宽的 UICollectionview 单元格
UICollectionView 单元格在swift中使用约束固定宽度和动态高度
UICollectionView Header 根据其内容和边距动态大小
动态调整 UICollectionView 大小以确保没有项目间距
尝试通过使用 UICollectionViewCompositionalLayout 实现固定高度、动态宽度(包装内容)水平 UICollectionView 的单元格