我使用collection view
以编程方式编写了swift 3
。它有1个部分和6个垂直项目。我假设每个项目的默认最小行间距是10,但我想为每个项目设置不同的行间距。例如,项目0和1之间的空间变为50,但项目1和2之间的空间变为0.我该怎么做?我搜索了很多但找不到解决方案。提前谢谢。
答案 0 :(得分:1)
通过设置集合视图的某些属性直接无法实现,但我认为你可以做一个技巧,
将您的minimum line spacing
和minimum 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);
}
,结果是
答案 1 :(得分:0)
一个想法可能是将线间距视为“其他类型的细胞”,就像空白细胞一样,你看到了吗?在方法heightForRowAtIndexPath
中,当indexPath对应于那些空白单元格时,返回其自定义高度,否则返回“真实”单元格的行高。
(这意味着返回cellForRow中的空白单元格,并将它们的编号添加到当前的numberOfRowInSection计数中)