Ios UICollectionView具有零项间距
我正在尝试对UICollectionViewFlowLayout进行子类化,以便消除单元格之间的空间,因为flow布局只允许设置MinimumItemSpacing,而不允许设置MaximumItemSpacing。我需要一个collectionView,它可以垂直滚动动态单元格高度,并且单元格之间没有空间。以下是我在UICollectionViewFlowLayout子类中尝试的内容: 虽然这似乎消除了项目间距,但也产生了奇怪的副作用。有些细胞最终太高,而另一些细胞则在大小上跳跃。而且,如果我滚动得很快,一些单元格根本就不会出现。有人知道我怎样才能最好地实现这个看似简单的事情吗 谢谢您需要在布局上设置最小行间距: 对于垂直滚动网格,此值表示连续行之间的最小间距。对于水平滚动网格,此值表示连续列之间的最小间距。此间距不适用于页眉和第一行之间或最后一行和页脚之间的间距 您正在为同一行中的项目设置MinimumItemSpacing: 对于垂直滚动网格,此值表示同一行中项目之间的最小间距。对于水平滚动网格,此值表示同一列中项目之间的最小间距。此间距用于计算一行中可以容纳的项目数,但在确定项目数后,实际间距可能会向上调整Ios UICollectionView具有零项间距,ios,objective-c,uicollectionview,uicollectionviewlayout,Ios,Objective C,Uicollectionview,Uicollectionviewlayout,我正在尝试对UICollectionViewFlowLayout进行子类化,以便消除单元格之间的空间,因为flow布局只允许设置MinimumItemSpacing,而不允许设置MaximumItemSpacing。我需要一个collectionView,它可以垂直滚动动态单元格高度,并且单元格之间没有空间。以下是我在UICollectionViewFlowLayout子类中尝试的内容: 虽然这似乎消除了项目间距,但也产生了奇怪的副作用。有些细胞最终太高,而另一些细胞则在大小上跳跃。而且,如果我
您当前的问题是因为您正在将项目移动到传递到布局的rect中,这样您可以在其中容纳更多的项目,但是您没有添加额外的项目来填充该空间,因此您看到了间隙。但是,您根本不需要覆盖它,只需设置“行间距”属性即可 您是每行有多个单元格,还是它们像表格一样叠在一起?这里的问题是,您仍然为特定的矩形返回相同数量的布局属性对象,即使您移动该矩形中项目的位置,以便可以在其中容纳额外的单元格,这就是为什么您会看到间隙
- (NSArray *) layoutAttributesForElementsInRect:(CGRect)rect {
NSArray *answer = [[super layoutAttributesForElementsInRect:rect] mutableCopy];
for(int i = 1; i < [answer count]; i++) {
UICollectionViewLayoutAttributes *currentLayoutAttributes = answer[i];
UICollectionViewLayoutAttributes *prevLayoutAttributes = answer[i - 1];
NSInteger maximumSpacing = 0;
NSInteger origin = prevLayoutAttributes.frame.origin.y + prevLayoutAttributes.frame.size.height;
if(origin + maximumSpacing + currentLayoutAttributes.frame.size.height < self.collectionViewContentSize.height) {
CGRect frame = currentLayoutAttributes.frame;
frame.origin.y = origin + maximumSpacing;
currentLayoutAttributes.frame = frame;
}
}
return answer;
}