首页 文章

动态大小UICollectionView单元格

提问于
浏览
54

enter image description here

1)如何用 UICollectionView 实现如图所示?

2)我尝试了 -(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath 方法并传递了不同的大小,但它在单元格之间留下了空格 . 我可以清空这些空间吗?我希望每个细胞都有不同的高度和宽度

Current output:
enter image description here
.

4 回答

  • 17

    对不起,这是超级晚了......但也许这会帮助那些尚未找到答案的人 . 如果您将图像放在一个数组中,则可以简单地引用图像大小并从那里调整单元格大小:

    - (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); 
    }
    

    希望这可以帮助..

  • 4

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

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

  • 49

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

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

    看看great tutorial,这里是something similar to what you want .

  • 2

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

相关问题