我怎样才能得到2列collectionview

Posted

技术标签:

【中文标题】我怎样才能得到2列collectionview【英文标题】:How can i get 2 column collectionview 【发布时间】:2020-08-17 23:25:47 【问题描述】:

您好,只是想知道为什么即使单元格的大小已经很小,我的集合视图仍在做 1 列。

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 
        let flowayout = collectionViewLayout as? UICollectionViewFlowLayout
        let space: CGFloat = (flowayout?.minimumInteritemSpacing ?? 0.0) + (flowayout?.sectionInset.left ?? 0.0) + (flowayout?.sectionInset.right ?? 0.0)
        let size:CGFloat = (collectionView.frame.size.width - space) / 2.0
        return CGSize(width: size, height: size)
    

这是我的委托代码。

这是collectionview故事板中插入的值

这是我运行它时的结果。

任何人都可以帮助我解决这个问题。我只想有一个 2 列就像这个截图

【问题讨论】:

首先,只需确认您向控制器确认UICollectionViewDelegateFlowLayout,如果您这样做了,您的约束就会被打破。只需尝试手动减小单元格的大小并重置约束并尝试。 @SatyenChauhan 是的,我的控制器上有那个代表,我正在打印单元格的大小,并且它不到集合视图大小的一半。当我将 -1 放在大小上时,它将变为 2 列。不知道为什么我需要这样做才能将其更改为 2 列。 【参考方案1】:

由于单元格宽度和高度不变,您可以为布局设置一次 ItemSize。使用委托来计算每个单元格可能不同的大小。

let layout = UICollectionViewFlowLayout()
let screenWidth = collectionView.bounds.width
let interItemSpacing = CGFloat(10)
let size = (screenWidth - interItemSpacing) / 2
layout.minimumInteritemSpacing = interItemSpacing
layout.itemSize = CGSize(width: size, height: size)
collectionView.collectionViewLayout = layout

【讨论】:

以上是关于我怎样才能得到2列collectionview的主要内容,如果未能解决你的问题,请参考以下文章

我怎样才能得到一个非科学计数法的大数字?

GeoDjango:我怎样才能得到两点之间的距离?

我怎样才能得到我的记忆快照

我怎样才能在这个程序中得到正确的输出?

我怎样才能得到一个结果? SQL: CASE 返回两行

我怎样才能找到“Y”的值,其中“Y”为零?