UICollectionView - 如何在同一部分显示不同高度的项目?

Posted

技术标签:

【中文标题】UICollectionView - 如何在同一部分显示不同高度的项目?【英文标题】:UICollectionView - How to display Items with different heights in the same section? 【发布时间】:2017-12-08 17:30:28 【问题描述】:

我在 UICollectionView 的同一部分显示更多项目(具有不同的高度值但具有相同的宽度)时遇到问题。问题是如下所示(第一张图片是我想要得到的,第二张是我实际拥有的):

UICollectionView

我已经为我不想要的行距实现了这两种方法:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat 
    return 0


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat 
    return 0

但我真的不知道我需要实现哪些其他方法才能实现我所需要的。有什么建议吗?谢谢!

【问题讨论】:

您无法使用基本的 collectionview 布局在屏幕左侧进行该表示。您需要创建自己的自定义。你可以看那里:***.com/questions/43186246/… 或那里:***.com/questions/42364859/… 【参考方案1】:

您可以使用以下方式 首先在您的类中实现 UICollectionViewDelegateFlowLayout 协议,然后覆盖 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 在你的类中函数并为你想要的任何单元格返回你的单元格大小

【讨论】:

感谢您的回答!但是我已经实现了那个方法,并且我已经有了我想要的单元格的大小。 (我实际上有图像中显示的第二种情况)我只是想弄清楚我能做些什么来让第三个单元格也低于第二个单元格。如果我不知道该怎么做,我将使用 2 个相同宽度和高度的项目。 好的,那么绿色形状顶部的填充是什么?是你自己加的吗?我认为它会导致灰色形状下降 不,不是我添加的!它是自动创建的。最初,我认为项目会在它们有空间的地方自动分配,但经过这次体验,我认为它只是在宽度上有一些空间时才会发生!但不是在高度。 (如示例) 为什么你坚持这些视图应该是分开的单元格?将它们全部放在一个单元格内,然后使该单元格全宽。我觉得比较简单 是的,事实上我知道这是一个解决方案,正如我在第一条评论中提到的那样(“如果我不知道怎么做,我将只使用 2 个相同宽度的项目和高度”=我将加入灰色和绿色单元格)但我很想找到一种不同的方法! PS:它适用于不同的宽度,但当它们也有不同的高度时会更加困难。

以上是关于UICollectionView - 如何在同一部分显示不同高度的项目?的主要内容,如果未能解决你的问题,请参考以下文章

将 UICollectionView 滚动到底部

UICollectionView 滚动到底部不显示整个项目

UICollectionView的隐式动画的问题

无法滚动到底部 UICollectionview

UICollectionview:滚动到顶部时安全区域上的灰色条

如何禁用 UICollectionView 部分之间的单元格拖动?