我怎样才能得到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的主要内容,如果未能解决你的问题,请参考以下文章