我在 iPad 应用程序中使用UICollectionView
流程布局。我有不同宽度和高度的细胞。当我使用UICollectionViewFlowLayout
的子类作为集合视图的布局时,它显示了单元格之间的间隙。
如果列中有大单元格,则会使该列的网格和小单元格呈现为列中该大单元格的居中。 有没有更好的方法来紧密包裹细胞?
我正在使用水平滚动。我尝试使用layoutAttributesForElementsInRect:
方法,但没有成功。
如果有人使用layoutAttributesForElementsInRect:
方法或其他方式做过同样的事情,请告诉我......
请找附件。我需要同样的解决方案
提前致谢...
答案 0 :(得分:1)
像这样使用
UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init];
layout.minimumInteritemSpacing = 0;
layout.minimumLineSpacing = 2;
答案 1 :(得分:0)
我将UICollectionViewFlowLayout和我的layoutAttributesForItemAtIndexPath:和layoutAttributesForElementsInRect:方法子类化了一个方法我有一个名为
的方法setLineAttributes:(UICollectionViewLayoutAttributes *)attributes visibleRect:(CGRect)visibleRect:
包含:
if (attributes.indexPath.item == 0 || attributes.indexPath.item == 1 || attributes.indexPath.item == 2) {
CGRect f = attributes.frame;
f.origin.x = 0;
attributes.frame = f;
} else {
NSIndexPath *ipPrev = [NSIndexPath indexPathForItem:attributes.indexPath.item - 3 inSection:attributes.indexPath.section];
CGRect fPrev = [self layoutAttributesForItemAtIndexPath:ipPrev].frame;
CGFloat rightPrev = fPrev.origin.x + fPrev.size.width + 10;
if (attributes.frame.origin.x <= rightPrev)
return;
CGRect f = attributes.frame;
f.origin.x = rightPrev;
attributes.frame = f;
}