如何使用UICollectionView创建3列

时间:2014-11-27 06:06:00

标签: ios objective-c

我想用UICollectionView创建一个3列,这是我做的代码: 我已将UICollectionViewFlowLayout附加到我的UICollectionView,并将itemSize设置为集合视图的宽度除以3:

    self.collectionView.backgroundColor =  [UIColor blueColor];

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

    double width = self.collectionView.frame.size.width;
    width /= 3;
    [flowLayout setItemSize:CGSizeMake(width, 100)];
    [flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];

    [self.collectionView setCollectionViewLayout:flowLayout];

但是当我运行它时,我每行只能看到1个项目,但项目的宽度设置正确。该项目的右侧是一堆白色空间。

你能告诉我我错过了什么吗?

谢谢。

更新

我尝试过最小间距设置。但那仍然行不通。我只看到一列细胞:

self.collectionView.backgroundColor =  [UIColor blueColor];
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];

[flowLayout setItemSize:CGSizeMake(160, 160)];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
flowLayout.minimumInteritemSpacing = 10.0f;
flowLayout.minimumLineSpacing = 10.0f;

[self.collectionView setCollectionViewLayout:flowLayout];

当我调整代码中的间距值时,我看到屏幕上的间距发生了变化。只是它只在1列中布置单元格。而不是2

3 个答案:

答案 0 :(得分:2)

在创建UICollectionViewLayout时,您应指定itemSizeminimumInterItemSpacingminimumLineSpacing,并可选择使用此信息滚动方向集合视图布局其项目。

答案 1 :(得分:1)

实施<UICollectionViewDelegateFlowLayout>协议,使用此功能即可

collectionView:layout:insetForSectionAtIndex:
collectionView:layout:minimumInteritemSpacingForSectionAtIndex:
collectionView:layout:minimumLineSpacingForSectionAtIndex:
collectionView:layout:referenceSizeForFooterInSection:
collectionView:layout:referenceSizeForHeaderInSection:
collectionView:layout:sizeForItemAtIndexPath:

参考此How do I create a UICollectionView with column and row headers?

答案 2 :(得分:1)

您的集合视图的尾随空间布局约束可能无法正确设置以水平扩展。

换句话说,集合视图正在尝试水平平铺项目,但右侧没有任何空间来放置其他项目,因此它将换行到下一行。