【问题标题】:UICollectionView with dynamic content(variable amount of views for each cell)具有动态内容的 UICollectionView(每个单元格的视图数量可变)
【发布时间】:2020-06-25 20:34:15
【问题描述】:

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

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

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

要走的路是什么?谢谢!

【问题讨论】:

    标签: ios swift iphone xcode uicollectionview


    【解决方案1】:

    基本上你有几个选择:

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

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

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

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

    【讨论】:

    • 谢谢!我用了你的第三种方法。我创建了一个 UICollectionView 和两种类型的视图。第一个带有日期,另一个带有事件。并且只是根据需要添加事件或标题。当然,我的模型中的数据需要排序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 2017-09-23
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    相关资源
    最近更新 更多