UICollectionView,UICollectionViewFlowLayout:不同的单元格宽度和单元格之间定义的相同间距

时间:2013-05-21 20:50:35

标签: uicollectionview uicollectionviewcell uicollectionviewlayout

我已经重载UICollectionViewFlowLayout以在每个UIImages中包含一个包含UICollectionViewCell的水平行滑块。

在重载的UICollectionViewFlowLayout中,我将minimumLineSpacing设置为0,以使UICollectionViewCells之间没有间距。 (默认为10px)

  • 如果每个单元格具有相同的宽度,则正确显示0px间距

  • 如果单元格的宽度较大,则不再考虑0px,并且应用单元格之间的默认10px ..

我试图实现以下方法但结果相同......

- (CGFloat)collectionView:(UICollectionView *)collectionView 
           layout:(UICollectionViewLayout*)collectionViewLayout 
           minimumLineSpacingForSectionAtIndex:(NSInteger)section {
    return 0.0;
}
  • 这是一个错误吗?
  • UICollectionViewCells宽度不同的{{1}}之间获取0px间距的“技巧”是什么?

1 个答案:

答案 0 :(得分:5)

  1. 这是一个错误吗?
    这不是错误,它是UICollectionViewFlowLayout的默认行为。流布局是一种换行布局,意味着假设它将所有单元格沿直线放置并将其排列在屏幕上。一旦它填满一行(没有新项目的空间),它将打破该行并继续下一行。 UICollectionViewFlowLayout确保 minimumLineSpacing 不确切。如果您的项目大小不同,则流布局会以保持最小行间距的方式排列单元格。因此,行大小可能会增加,但永远不会比您之前设置的值更低。

    enter image description here

  2. 我不认为流布局是可行的,你应该使用一个自定义布局。检查this iam不确定是否可以将间距设置为零试一试 JSPrintDemo