动态大小UICollectionView单元格

时间:2014-05-20 12:47:19

标签: ios objective-c uicollectionview uicollectionviewcell uicollectionviewlayout

enter image description here

1)如何使用UICollectionView

实现图像所示

2)我尝试过-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath方法&通过不同的大小,但它留下了细胞之间的空间。我可以清空这些空间吗?我想要不同的高度和每个单元格的宽度

当前输出: enter image description here

4 个答案:

答案 0 :(得分:49)

对不起,这已经太晚了......但也许这会帮助那些尚未找到答案的人。 如果您将图像放在一个数组中,您只需参考图像大小并从那里调整单元格大小:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    UIImage *image = [imageArray objectAtIndex:indexPath.row];
//You may want to create a divider to scale the size by the way..
    return CGSizeMake(image.size.width, image.size.height); 
}

希望这会有所帮助..

答案 1 :(得分:17)

也许这种布局符合您的需求。 请看一下这个项目: https://github.com/betzerra/MosaicLayout

我不确定100%它是否完全满足您的要求,但在最坏的情况下,它可以帮助您编写自定义UICollecionViewFlowLayout(这是实现目标的唯一方法)

答案 2 :(得分:4)

您无法使用标准UICollectionViewFlowLayout获得类似问题的结果,在其基础实现(没有子类化)中会创建网格布局。

要获得所需内容,您应该创建自己的UICollectionViewLayout(或者UICollectionViewFlowLayout)子类,在其中执行将每个项目放在右侧框架中所需的所有计算。

点击此处查看great tutorial,此处查看something similar to what you want

答案 3 :(得分:2)

不是在一行中创建图像的可变高度,而是固定相同大小的图像高度,但可以在一行中具有不同的宽度。创建这样的组合和显示,您可以将不同高度的相同单元重用于一个或多个不同的图像行中的宽度。我已经完成了同样的感觉,就像你正在寻找谷歌图像搜索一样