我正在创建一个启用了分页并从左向右滚动的UICollectionView。我正在使用NSFetchedResultsController从CoreData检索结果,这意味着它使用集合视图部分而不是行。集合视图有两行,因此显示为以下屏幕截图(顺序依次为:顶行,底行,顶行,底行等):

ios - UICollectionView从左到右读取多行-LMLPHP

但是,我需要像下面的两个屏幕截图一样从左到右读取集合视图:

ios - UICollectionView从左到右读取多行-LMLPHP
ios - UICollectionView从左到右读取多行-LMLPHP

您能建议我如何在Swift中执行此操作吗?

最佳答案

首先,我想如果您提供一个示例,如何对当前单元格进行分区(例如,第0部分:a,b,c,d,第1部分:e,f,...)以及您希望不同部分如何划分,可能会有所帮助显示/布局。



我建议创建一个自定义UICollectionViewLayout子类。

在prepareLayout方法中,您应该为每个单元格计算并缓存UICollectionViewLayoutAttributes。

创建变量:

let xOffset = 0.0 // leftContentInset within collectionView.bounds
let yOffsetRow0 = 0.0  // y offset of first row within collectionView.bounds
let yOffsetRow1 = 50.0 // y offset of second row within collectionView.bounds
var currentXOffset : CGFloat = xOffset
var currentPage : Int = 0



计算帧,直到第一行填充到屏幕右侧(CGRect(currentXOffset, yOffsetRow0, cellWidth, cellHeight),增加currentXOffset)
重设currentXOffset = xOffset
对第二行重复1.与yOffsetRow1
增量currentPage += 1
重置currentXOffset = xOffset + (collectionView.frame.width * currentPage) //用于下一页
重复步骤1-5,直到计算出所有单元的布局

10-04 13:57