UICollectionView自定义布局 - 单元格未正确排列

时间:2013-05-20 14:42:28

标签: iphone ios uicollectionview uicollectionviewlayout

在我的iPhone应用程序中,我想在UICollectionview中使用自定义布局。对于集合视图单元格将有不同的高度。我想设置这样的布局。 我尝试了很多东西,最后调整了高度。(我从服务器获取每个对象的高度)

但是布局不合适。项目之间有很多空格。 如何实现正确的布局。

现在我得到这样的观点 enter image description here

我想要的是 -

enter image description here

这是我的代码 -

-(CGFloat)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout heightForItemAtIndexPath:(NSIndexPath*)indexPath
{
  return 60;
}


 -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
   return array.count;   // getting from server
   }


 -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

   CollectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CollectionCell" forIndexPath:indexPath];

   cell.imageBG.image = [imagearray objectAtIndex:indexPath.item];


   return cell;
   }




  -(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {


    CGSize retval;


  // I'm taking height of each images into HeightArray

retval =  CGSizeMake(100, [[HeightArray objectAtIndex:indexPath.item]floatValue ]+50);


return retval;
}

1 个答案:

答案 0 :(得分:1)

从您的屏幕截图中,您似乎正在尝试使用标准的UICollectionViewFlowLayout(或其子类)。不幸的是,它的局限在于每一行总是占据相同的高度 - 它与该行中的最高单元格相同,因此它不适合您的任务,您必须实现自己的布局。

检查UICollectionViewWaterfallLayout类,虽然它有其局限性(仅支持1个部分,没有装饰视图)提供您需要的布局,但如果您无法使用它,至少可以是一个很好的起点现在是。