swift - UICollectionView 不同大小的单元格和项目计数

标签 swift uicollectionview uicollectionviewflowlayout

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

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

最佳答案

使用 plain UICollectionViewLayout 不可能做到这一点。从本质上讲,UICollectionViewLayout 是一种“line-braking-layout”,line-height 是其最高元素的高度。请看以下内容:

Apple docs on using UICollectionViewFlowLayout

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

Creating custom layouts

关于swift - UICollectionView 不同大小的单元格和项目计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53537544/

相关文章:

ios - 在 iOS 中以编程方式删除配对的蓝牙设备

ios - UICollectionViewFlowLayout(在 xcode6 下针对 iOS7 时布局不正确)

ios - 自定义 CollectionView 布局 - 消息已发送到已释放的 NSDictionary

ios - 为什么在设备旋转的纵向模式下不专门调用 UICollectionViewDelegateFlowLayout 方法?

ios - 以编程方式从 CollectionView 单元推送 viewController 不起作用 - swift

swift - 在 Swift cocoa 应用程序中使用 Quick Look 来预览音频文件

ios - 火力地堡和 swift : How to use another database for storing larger files?

swift - MKPointAnnotation 和 PFObject

ios - 从collectionView中获取indexpath,有时会获取错误的indexPath

ios - 如何在 UICollectionViewDelegateFlowLayout 中设置无间距?