我使用xCode 5,iOS 7,Storyboards创建了我认为的基本UICollectionView, AutoLayout OFF,但我得到了奇怪的结果。
我曾希望创建一个单一的"列" - 也就是说,所有单元格垂直堆叠,没有并排(例如TableView):
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
但是,我得到了这样的2列(我只能看到我是否水平滚动):
| 1 | | 2 |
| 3 | | 4 |
| 5 |
我的CollectionView与我的细胞宽度相同, 1个部分,没有插入,没有标题,滚动方向=垂直,布局=流程。
编辑:我尝试通过故事板添加5个单元格,它们按照我的要求排列,但在以编程方式添加时仍然没有排队...
EDIT2:仅供参考,我还有另一个UICollectionView工作正常 - 唯一的区别是它是4x4
如何实现单列'布局?
答案 0 :(得分:2)
考虑实施-(CGSize)collectionView:layout:sizeForItemAtIndexPath:
的{{1}}。您可以根据集合视图边界调整单元格。流程布局目前正在利用这样一个事实:当设备处于横向时,您的两个单元可以并排放置。
另一种方法是使用UICollectionViewDelegateFlowLayout
答案 1 :(得分:0)
好吧,为了管理您的集合视图,您的视图控制器应遵循三个协议:UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout
。这实际上意味着您需要覆盖:
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return numberOfItems;
}
-(UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
UICollectionViewCell *cell = (UICollectionViewCell*)[collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
//configure your cell the way you want
return cell;
}
为了获得一列,您必须将单元格的宽度设置为与collectionView的宽度相同或更多,但小于(单元格的双倍宽度+ interitem间距+ insets)
在cellForItemAtIndexPath:
尝试此操作 CGRect a =cell.frame;
a = GCRectMake(0,96*[indexPath.item intValue],113,96);
cell.frame = a;
答案 2 :(得分:0)
这可以使用StoryBoard完成: