UICollectionView - swift 3中每个项目的行间距不同

时间:2017-09-11 12:13:42

标签: ios xcode swift3

我使用collection view以编程方式编写了swift 3。它有1个部分和6个垂直项目。我假设每个项目的默认最小行间距是10,但我想为每个项目设置不同的行间距。例如,项目0和1之间的空间变为50,但项目1和2之间的空间变为0.我该怎么做?我搜索了很多但找不到解决方案。提前谢谢。

2 个答案:

答案 0 :(得分:1)

通过设置集合视图的某些属性直接无法实现,但我认为你可以做一个技巧,

将您的minimum line spacingminimum interitem spacing设置为0

 layout.minimumInteritemSpacing = 0
 layout.minimumLineSpacing = 0

所以你的collection view cell任何一方都没有任何空间!

现在让您的手机背景颜色保持清晰!

并在单元格中添加UIView(您的内容),其大小(小于单元格大小)显示两个单元格之间的间距。因此,您可以在每个单元格中添加不同大小的视图,它将在每个单元格之间显示不同的空间!

或者

如果您不想调整单元格内部视图的大小,那么您可以为委托方法sizeForItemAtIndexPath为不同的项目返回不同大小的单元格!

例如,

我正在编写客观c代码,例如

您的sizeforitem

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

if (indexPath.item == 1 || indexPath.item == 6 || indexPath.item == 7 || indexPath.item == 9 || indexPath.item == 15) {

    return CGSizeMake(screenWidth/3 -20, screenWidth/2);
}

return CGSizeMake(screenWidth/3, screenWidth/3);
}

,结果是

enter image description here

答案 1 :(得分:0)

一个想法可能是将线间距视为“其他类型的细胞”,就像空白细胞一样,你看到了吗?在方法heightForRowAtIndexPath中,当indexPath对应于那些空白单元格时,返回其自定义高度,否则返回“真实”单元格的行高。

(这意味着返回cellForRow中的空白单元格,并将它们的编号添加到当前的numberOfRowInSection计数中)