动态大小UICollectionView单元格

Aks*_*eri 54 objective-c ios uicollectionview uicollectionviewcell uicollectionviewlayout

在此输入图像描述

1)如何实现如图所示UICollectionView

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

当前输出: 在此输入图像描述.

Rob*_*J25 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); 
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助..

  • 你试过吗?因为,我一开始就试过这个.它不起作用. (9认同)

Ale*_*nko 17

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

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

  • 嗨!我是MosaicLayout的作者,请告诉我你是否遇到过一些问题:-) (5认同)
  • 一点也不.祝好运!只是克隆项目并运行MosaicCollectionView.xcodeproj我希望它正是你需要的:) (2认同)
  • 谢谢@betzerra,我会尝试从超级繁忙的日程中获得一些时间.我知道我需要快速学习.你的MosaicLayout会在学习的过程中以多​​种方式帮助我.:) (2认同)

Ale*_*rrù 4

您无法使用标准实现像问题中那样的结果UICollectionViewFlowLayout,该标准在其基本实现(没有子类化)中创建了网格布局。

为了获得你想要的,你应该创建你自己的UICollectionViewLayout(或者可能是UICollectionViewFlowLayout)子类,在其中执行将每个项目放置在正确框架中所需的所有计算。

在这里查看一个很棒的教程,在这里查看与您想要的类似的内容