UICollectionView在scrollDirection 为 UICollectionViewScrollDirectionHorizontal时排序是自上往下,达到最大行数后再自左向右增加列数,这可能与我们所需的效果不同,上图下方图片是我们期望的排序的方式。
实现这种方式,我们可以通过运算从数据列表中取出对应下标的数据填充UICollectionViewCell。
NSInteger rowsNum = ceil(dataAry.count/3.0);NSInteger column = (indexPath.row/rowsNum);NSInteger row = indexPath.row%rowsNum+column*rowsNum;return row;
dataAry为我们的数据数组;3.0为期望每行所占有的cell(也是根据它计算collectionView的高度,控制collectionView展示的行数,然后collectionView沿水平方向扩展列数);rowsNum为行数**,column** 为(列数-1);indexPath.row%rowsNum取到cell所在行数,column*rowsNum为所在列之前cell的个数;row为cell该展示的数据的下标
此处有一种情况,即当有四个cell时,按我们的期望,每行展示三个cell的话,需要两行,于是我们计算的collectionview的高度也是两行cell排列是的高度,但是collectionview会自动排列为两行两列,与我们的期望不同,如果要求严格的话,只能通过自定义