垂直放置集合视图单元格而不是水平放置?

Posted

技术标签:

【中文标题】垂直放置集合视图单元格而不是水平放置?【英文标题】:Place the collection view cells vertically instead of horizontally? 【发布时间】:2018-03-23 16:20:21 【问题描述】:

如何设计 UICollectionView 使其垂直填充集合视图单元格(按列)而不是水平填充(按行)?

集合视图应该是垂直可滚动的,我不应该改变集合单元格的大小并动态确定行数吗?

【问题讨论】:

使单元格的宽度与collectionview的宽度相同 设置流布局滚动方向为horizontal. 它正在工作,但我应该也可以限制行数,我该怎么做? 【参考方案1】:
(YOUR_COLLECTIONVIEW_NAME.collectionViewLayout as? UICollectionViewFlowLayout).scrollDirection = .horizontal

【讨论】:

请解释这段代码的作用以及它如何/为什么解决了 OP 的问题。【参考方案2】:

我使用这个代码:

let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
myCollectionView.collectionViewLayout = layout   

对于有限的行数,您可以设置 collectionView 的高度和设置单元格的高度和间距。例如,如果您需要 2 个列中的单元格,您将编写:

        layout.sectionInset = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
        layout.itemSize = CGSize(width: self.collectionView.frame.size.width / 5, height: self.collectionView.frame.size.height / 2.5)
        layout.minimumInteritemSpacing = 0
        layout.minimumLineSpacing = 0   

您可以根据需要更改此参数

【讨论】:

这对我很有帮助,但集合视图应该是垂直滚动的,并且行数是动态确定的,我不应该水平滚动。 哦,哇。 CollectionView 是具有其属性的默认对象。我不知道,但你可以计算一行显示多少个单元格,并据此计算你需要多少行。 并以编程方式进行,例如,将 CollectionView 放在 scrollView 中,并设置 CollectionView.isScrollEnabled = false 我可以这样做,但是由于滚动方向是水平的,因此单元格可以水平滚动。

以上是关于垂直放置集合视图单元格而不是水平放置?的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionViewLayout 水平部分,垂直单元格

嵌套集合视图 Swift 4.2

iOS画外音,如何跳过表格视图单元格而不是说“未启用”

集合视图单元格垂直顶部对齐

iPhone Tableview 在水平滚动而不是垂直中使用单元格

iOS6 - UICollectionViewFlowLayout 没有正确放置单元格