UICollectionView实现列表,有'非法'间距的原因

今天用CollectionView实现的列表效果不理想,一直不知道问题出现在那里


UICollectionView实现列表,有'非法'间距的原因
有间距,但不属于cell的高度

改变下面2个方面也不行:

//定义每个UICollectionViewCell 的大小

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

CGSize size = CGSizeMake(80,80);

return size;

//定义每个Section 的上左下右的四边间距

-(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section

{

return UIEdgeInsetsMake(15, 15, 5, 15);//分别为上、左、下、右

}

最后才明白,那个间距是cell之间的间距(通过设置背景色发现的-.-),要另外设置:

//这个是两行之间的间距(上下cell间距)

 - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section;

//这个方法是两个之间的间距(同一行cell的间距)

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section;

也可以用在这个layout设置为0:

UICollectionViewFlowLayout* layout = [[UICollectionViewFlowLayout alloc]init];

layout.minimumLineSpacing = 0.0f;

最后实现效果,至于原理,为什么苹果会自动给间距呢?我理解是因为,collection本来就是用来做一个分视图的效果的,所以默认留20的间距吧。(因为要实现 一个流水式的热点关键字布局,所以用collectionView,合理吗?求指点)


UICollectionView实现列表,有'非法'间距的原因
没有间距的效果


- 如果有什么疑问,可以在评论区一起讨论;

- 如果有什么不正确的地方,欢迎指导!

> 注:本文首发于iHTCboy's blog,如若转载,请注明来源。

上一篇:一段iOS代码的演变史


下一篇:iOS代理方法导致崩溃的思考