UICollectionView:一行或一列

我想使用UICollectionView来显示一个水平的可UICollectionView列表的缩略图,但是,我希望这是一个单一的行。 在另一个视图中,我在UICollectionView显示缩略图,但是这个垂直滚动并且在一个列中。

目前,我这样做的方式是通过改变集合视图的大小,只有足够大的一个项目,所以它自动套用和工作,但现在我处理可变大小的项目,所以它不再工作。

你如何使UICollectionView显示一行或一列?

我猜你正在使用内置的Flow Layout 。 但是,对于你的情况,你应该做一个自定义的UICollectionView Layout 。 将其设置为UICollectionViewFlowLayout子类并在init方法中添加以下代码:

 - (id)init { if ((self = [super init])) { self.scrollDirection = UICollectionViewScrollDirectionHorizontal; self.minimumLineSpacing = 10000.0f; } return self; } 

minimumLineSpacing是使它在这里有一行的关键。

我希望这有帮助!

我发现设置minimumLineSpacing只是让我的滚动区域真的很大,并设置minimumInteritemSpacing=big完成保持项目在一个滚动行或列,居中在collectionview的中间。

如果您可以信任types转换,那么子类没有真正的原因。

 ((UICollectionViewFlowLayout *)self.collectionView.collectionViewLayout).minimumLineSpacing = 1000.0f; 

如果你从一个笔尖加载了你的collectionView,你也可以使用Attributes和Size Inspectors中的参数。

滚动方向也一样。

当你初始化你的UICollectionViewFlowLayout ,在init参数中传递下面的UICollectionViewFlowLayout

注意:您不需要创buildUICollectionViewFlowLayout的子类

 var collectionViewFlowControl = UICollectionViewFlowLayout() collectionViewFlowControl.scrollDirection = UICollectionViewScrollDirection.Horizontal 

对于0像素单元格间距:

 collectionViewFlowControl.minimumInteritemSpacing = 0; collectionViewFlowControl.minimumLineSpacing = 0; collectionView = UICollectionView(frame: CGRectMake(0, 0, self.view.frame.size.width, 120), collectionViewLayout: collectionViewFlowControl) 
  UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init]; [layout setScrollDirection:UICollectionViewScrollDirectionHorizontal]; layout.minimumInteritemSpacing = 0; layout.minimumLineSpacing = 0; blendEffectCollectionView=[[UICollectionView alloc] initWithFrame:CGRectMake(0, 95, 320, 60) collectionViewLayout:layout]; [blendEffectCollectionView setDataSource:self]; [blendEffectCollectionView setDelegate:self]; [blendEffectCollectionView registerClass:[BlendModeCell class] forCellWithReuseIdentifier:@"cellIdentifier"]; [blendEffectCollectionView setBackgroundColor:[UIColor clearColor]]; [bottomActivityView addSubview:blendEffectCollectionView];