1

使用UICollectionView流委托,我正在尝试完成此操作,但我仍然需要删除两个单元格区域中的巨大间距。

在此处输入图像描述

我的代码:

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

预期的 :

在此处输入图像描述

4

1 回答 1

2

使用plainUICollectionViewLayout是不可能做到这一点的。从本质上讲,它UICollectionViewLayout是一个“线制动布局”,而 line-height 是其最高元素的高度。请参阅以下内容:

关于使用 UICollectionViewFlowLayout 的 Apple 文档

但是,您想要的行为可以通过子类化来实现UICollectionViewFlowLayout。这是有关如何执行此操作的指南:

创建自定义布局

于 2018-11-29T15:24:45.627 回答