UICollectionView 水平滚动 - 单元格排列成列而不是行

Posted

技术标签:

【中文标题】UICollectionView 水平滚动 - 单元格排列成列而不是行【英文标题】:UICollectionView Horizontal Scrolling - cells ordered into columns instead of rows 【发布时间】:2016-09-30 16:17:04 【问题描述】:

我有一个水平滚动的集合视图。它有 3 行和 5 列。一旦我启用了水平滚动,单元格就会向下填充列而不是跨行。例如,我有一个数组 1,2,3,4,5,6,8,9,10,11,12,13,14,15,16 用于填充我的集合视图。细胞看起来像这样

1,4,7,10,13,16
2,5,8,11,14
3,6,9,12,15

我该如何解决这个问题。

【问题讨论】:

【参考方案1】:

这是水平的默认行为。如果您愿意,您可以以某种方式对数组进行排序,以便按照您想要的方式显示。

像这样:

var array = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
var horizontalSortedArray = [Int]()
let columns = 5
let rows = 3
for i in 0..<columns 
    for j in 0..<rows 
        horizontalSortedArray.append(array[j*columns+i])
    

print(horizontalSortedArray)
// [1, 6, 11, 2, 7, 12, 3, 8, 13, 4, 9, 14, 5, 10, 15]

现在,如果您在水平模式下使用这个新数组作为数据源,它将显示如下:

1 ,2 ,3 ,4 ,5
6 ,7 ,8 ,9 ,10
11,12,13,14,15

【讨论】:

如果我的数组不总是相同数量的行和列怎么办。因为我希望集合视图填满行,直到它们填满。填满后下一行开始,但当三行填满时,会形成一个新列,用户现在可以滚动到一侧以查看新列

以上是关于UICollectionView 水平滚动 - 单元格排列成列而不是行的主要内容,如果未能解决你的问题,请参考以下文章

在 UICollectionView 中禁用水平滚动

UICollectionView 中的垂直和水平滚动方向

UICollectionView 水平滚动

UICollectionView 水平滚动与静态焦点项目

UICollectionView 水平滚动特定列

UICollectionView 保持水平列表滚动位置