4

我正在使用 UICollectionView 来显示多个数据部分。这些部分具有固定数量的项目。我希望所有项目都显示在一个连续的网格中。

现在我在水平方向上完成了这个: 在此处输入图像描述

但在垂直方面,这留下了很大的差距: 在此处输入图像描述

我想解决部分之间的这种差距,因为它很丑而且不属于那里。我很乐意使用自定义 FlowLayout,但我找不到一个指导我正确方向的教程(我找到了几个,但没有一个真正涉及到这个问题。)

任何人都可以帮我解决这个问题,或者至少指出我正确的方向吗?

PS:我已经实现了部分,因为我正在动态加载数据。目前,我不能选择使用 1 部分。

更新 根据要求,我正在添加用于我当前 FlowLayout 的值。我在全屏(减去 UINavigationBar)UICollectionView 上使用标准水平流布局,每个部分有 21 个项目。

  • 滚动方向:水平
  • 单元格大小:248、196
  • 页眉/页脚大小:无
  • 单元格的最小间距:10
  • 行的最小间距:10
  • 部分插图:20、20、10、10
4

2 回答 2

8

像这样使用

它将解决Gap问题

UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init];

layout.minimumInteritemSpacing = 0;
layout.minimumLineSpacing = 2;
于 2013-12-21T13:08:11.903 回答
1

要消除这些差距,您需要创建自定义布局,该布局将作为您的集合视图的布局。这个类将是 UICollectionViewFlowLayout 的子类。

然后您可以覆盖以下两种方法,并可以根据需要创建自己的自定义布局。

  - (NSArray*)layoutAttributesForElementsInRect:(CGRect)rect
  - (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)path

UICollectionViewLayoutAttributes 是处理单元格位置、框架、Zindex 等的类

您还可以使用以下属性。

 collectionView:layout:minimumInteritemSpacingForSectionAtIndex:
 collectionView:layout:minimumLineSpacingForSectionAtIndex:
于 2013-02-13T11:45:50.837 回答