我想用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
答案 0 :(得分:2)
在创建UICollectionViewLayout
时,您应指定itemSize
,minimumInterItemSpacing
和minimumLineSpacing
,并可选择使用此信息滚动方向集合视图布局其项目。
答案 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)
您的集合视图的尾随空间布局约束可能无法正确设置以水平扩展。
换句话说,集合视图正在尝试水平平铺项目,但右侧没有任何空间来放置其他项目,因此它将换行到下一行。