UICollectionView 不同大小的单元格和项目数
Posted
技术标签:
【中文标题】UICollectionView 不同大小的单元格和项目数【英文标题】:UICollectionView different size cell and item count 【发布时间】:2018-11-29 11:03:32 【问题描述】:使用UICollectionView
flow delegate,我正在尝试完成此操作,但我仍然需要删除两个单元格区域中的巨大间距。
我的代码:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
if indexPath.row == 0 || indexPath.row == 5
return CGSize(width: (getWidth()/2) , height: (getWidth()/2))
return CGSize(width: (getWidth()/4) , height: (getWidth()/4))
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat
return 0
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat
return 0
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets
return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
预期:
【问题讨论】:
你的getWidth函数是什么 你需要创建你的自定义 collectionViewLayout 来获得类似的东西。我认为开箱即用的布局是不可能的 尝试 BSJ 促销代码 raywenderlich.com/… 这会对你有所帮助。 问题似乎在你的 getWidth() 函数中检查它。或者可能在您的图像约束中不是 0 【参考方案1】:使用 plain UICollectionViewLayout
是不可能做到这一点的。就其本质而言,UICollectionViewLayout
是一个“line-braking-layout”,而 line-height 是其最高元素的高度。请参阅以下内容:
Apple docs on using UICollectionViewFlowLayout
但是,您可以通过子类化UICollectionViewFlowLayout
来实现您想要的行为。以下是操作指南:
Creating custom layouts
【讨论】:
以上是关于UICollectionView 不同大小的单元格和项目数的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionView Objective C中有2种不同的单元格大小
设置单元格数据后如何更新 UICollectionView 中单元格的大小?
iOS UICollectionView 原型单元格大小属性被忽略