gpt4 book ai didi

ios - Swift:基于奇数项或偶数项的 2 列网格中的 UICollectionView 动态单元格大小

转载 作者:搜寻专家 更新时间:2023-11-01 06:28:02 27 4
gpt4 key购买 nike

我正在尝试实现一个 Collection View ,我必须在其中从 API 数据加载图像。这里的挑战是我的 Collection View 是一个 2 列网格,如果图像数量是奇数,那么第一个单元格应该跨越整行。这是我想要的设计模型

design mockup

所以按照模型

  • 如果项目是偶数,则每行显示 2 个。
  • 如果项目是奇数,显示第一个跨越整行,并显示剩余的跨越 2在每一行。

我正在按照本教程创建 GridView ,但不知道如何在模型中实现设计

https://www.raywenderlich.com/136159/uicollectionview-tutorial-getting-started

如有任何帮助,我们将不胜感激。提前致谢。

最佳答案

您可以只检查您拥有的元素数量,并根据是否为奇数来设置尺寸。如果它是奇数,并且您只希望每三项中的第一项具有更大的大小,您还可以通过除以 3 来检查余数。示例如下。

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
if collectionView.numberOfItems(inSection: 0) % 2 == 0 {
return CGSize(width: (collectionView.frame.size.width - 5) / 2, height: (collectionView.frame.size.width - 5) / 2)
}
let remaider = (Double(indexPath.item)/3).truncatingRemainder(dividingBy: 1)
if remaider == 0 {
return CGSize(width: self.collectionView.frame.size.width, height: self.collectionView.frame.size.width)
}
return CGSize(width: (collectionView.frame.size.width - 5) / 2, height: (collectionView.frame.size.width - 5) / 2)
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 5
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 5
}

关于ios - Swift:基于奇数项或偶数项的 2 列网格中的 UICollectionView 动态单元格大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51366495/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com