更改 CollectionView 单元格的垂直间距

Posted

技术标签:

【中文标题】更改 CollectionView 单元格的垂直间距【英文标题】:Change Vertical Spacing of CollectionView Cell 【发布时间】:2015-08-28 02:21:44 【问题描述】:

我正在使用 UICollectionView 并像这样在集合视图的委托方法中更改项目的大小

- (void)viewDidLoad 
[super viewDidLoad];
// Do any additional setup after loading the view.

    lastIndex = 0;
    layoutDiff = 4;



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

    if(indexPath.row == (lastIndex + layoutDiff) - 1)
        layoutDiff = (layoutDiff == 4)?5:4;
        lastIndex = indexPath.row + 1;
        return CGSizeMake(213.2, 213.2);
    

    return CGSizeMake(106.6, 106.6);

这是我当前的屏幕。

以及下面的所有单元格都遵循这种行为,这意味着我想要的模式就像一个集合视图项变大,这取决于我想要让它变大但我不想要这个空间的逻辑。我认为如果那里没有空间,那么一切都会正确。有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

FlowLayout 对此无能为力。

您必须实现 UICollectionLayout 的子类。

这里有一些关于自定义集合视图布局的文章。

自定义集合视图布局。

https://www.objc.io/issues/3-views/collection-view-layouts/

知道何时子类化流布局 https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/CollectionViewPGforIOS/UsingtheFlowLayout/UsingtheFlowLayout.html#//apple_ref/doc/uid/TP40012334-CH3-SW4

【讨论】:

我已经尝试了 url,我已经为我的要求创建了自定义布局,并且我已经分配了值。现在我被困在我需要获取 indexPathsOfItemsInRect 的第一个函数上。我想不通。但感谢您的参考网址。正在研究它们。 如果您觉得我的回答有帮助...采纳它..谢谢。 其实我的计算是正确的,这对我帮助很大。 github.com/ra1028/RACollectionViewReorderableTripletLayout 我刚刚用我的逻辑替换了框架更改代码,用我的代码替换了集合视图内容大小更改逻辑。谢谢你为我指明了正确的方向。

以上是关于更改 CollectionView 单元格的垂直间距的主要内容,如果未能解决你的问题,请参考以下文章

仅更改一个 collectionview 单元格的对象

如何根据我放入 UITextbox 的文本量来更改 UICollectionView 单元格的垂直大小?

滚动时collectionview更改单元格背景图像

垂直放置集合视图单元格而不是水平放置?

根据单元格的不更改单元格高度动态更改 UICollectionView 高度

根据 CollectionView 中的选择更改 ImageView