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];