UICollectionView差异大小单元格和项目数

时间:2018-11-29 11:03:33

标签: swift uicollectionview uicollectionviewflowlayout

我使用UICollectionView流委托来实现这一目标,但是我仍然需要删除两个单元格区域中的巨大间距。

enter image description here

我的代码:

  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)
        }

预期:

enter image description here

2 个答案:

答案 0 :(得分:1)

无法使用普通UICollectionViewLayout UICollectionViewLayout本质上是“行制动布局”,行高是其最高元素的高度。请查看以下内容:

Apple docs on using UICollectionViewFlowLayout

但是,可以通过将UICollectionViewFlowLayout子类化来实现所需的行为。

以下是有关操作方法的指南:

Creating custom layouts

答案 1 :(得分:0)

已使用此SNCollectionViewLayout

解决了这些问题