【问题标题】:UICollectionView different size cell and item countUICollectionView 不同大小的单元格和项目数
【发布时间】: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

标签: swift uicollectionview uicollectionviewflowlayout


【解决方案1】:

使用 plain UICollectionViewLayout 是不可能做到这一点的。就其本质而言,UICollectionViewLayout 是一个“line-braking-layout”,而 line-height 是其最高元素的高度。请参阅以下内容:

Apple docs on using UICollectionViewFlowLayout

但是,您可以通过子类化UICollectionViewFlowLayout 来实现您想要的行为。以下是操作指南:

Creating custom layouts

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 2016-03-06
    • 2014-07-08
    • 2013-03-05
    • 2016-04-10
    • 1970-01-01
    相关资源
    最近更新 更多