uicollectionview的单元格不显示在行中

时间:2014-06-05 12:15:17

标签: ios objective-c uicollectionview

我有12张图片,我想在UICollectionView中以4行显示这些图片,每行有3张图片。

  

这是我的.h文件代码

    @interface MyMusic : UIViewController<UICollectionViewDataSource,UICollectionViewDelegate>
{
UICollectionView *_collectionView;
}
@end

这是我的.m文件代码

- (void)viewDidLoad{
enter code hereUICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
[flowLayout setItemSize:CGSizeMake(100, 100)];
[flowLayout setMinimumLineSpacing:5];
[flowLayout setMinimumInteritemSpacing:5];
[flowLayout setSectionInset:UIEdgeInsetsMake(0, 0, 0, 0)];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];

_collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(10,238, 300, 200) collectionViewLayout:flowLayout];
_collectionView.backgroundColor = [UIColor redColor];
[_collectionView setDataSource:self];
[_collectionView setDelegate:self];
[_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cellIdentifier"];
[self.view addSubview:_collectionView];
}


 - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
return 4;}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{return 3;}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
enter  UICollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath];

cell.backgroundColor=[UIColor greenColor];
return cell;
}
  

上面的代码工作正常,但我的输出不会正确

它看起来像这样

enter image description here

任何人都可以帮助我如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

UICollectionView宽度 300点,而物品的宽度为100点。 Interitem空间是5分,所以

100*3 + 5*2 = 310. 

这就是为什么你只看到2列。

让细胞的宽度稍微缩小,例如290

或者将interitem间距设置为0。

主要规则 - 您的UICollecitionView宽度应大于或等于单元格的总和widths + interitem spacing

答案 1 :(得分:0)

替换

[flowLayout setItemSize:CGSizeMake(100, 100)];

通过

[flowLayout setItemSize:CGSizeMake(75,100 )]; 

我正在使用75仅用于试用,并考虑使用iphone screen.so列的宽度相等。

但是,您不应使用硬编码值。