UICollectionView的cell间距问题

UICollectionView的cell间距问题

cell的间距是有三个因素共同调整的
  • cell的最小间距 minimumInteritemSpacing
  • cell的大小 [flowLayout setItemSize:]
  • cell的内边距 flowLayout.sectionInset

假设:
CollectionView宽度:CollectionWidth,
一个Cell宽度:CellWidth,
cell的内边距 UIEdgeInsetsMake(top, left, bottom, right);
一行cell的个数:N,
cell的间距:SpaceX,
cell的最小间距:MinimumX

公式如下
SpaceX = (CollectionWidth - CellWidth * N - left - right)/(N-1);
CellWidth = (CollectionWidth - (left + right + SpaceX*(N-1)))/N;

当 SpaceX >= CellWidth时,N会递增,也就是说一行的cell数量会增多。
当SpaceX < MinimumX时(所以minimumInteritemSpacing要设置的小于等于你想要的间距),cell就会进行换行,所以N会取允许范围内的最大值。
由此可见,对于某一个固定了宽度的CollectionView,cell的间距只是由cell的宽度决定的。

eg:

要求:
+ CollectionView的宽度是屏幕宽度 ScreenWidth
+ Cell的左右内边距分别是5
flowLayout.sectionInset = UIEdgeInsetsMake(3, 5, 3, 5);
+ Cell之间的间距为六 flowLayout.minimumInteritemSpacing =6;

见下图
这里写图片描述

那么此时cell的宽度设置多少刚好呢?
由于:
CellWidth = (CollectionWidth - (left + right + SpaceX*(N-1)))/N;
所以:
CellWidth = (ScreenWidth -(5+5 + 6*1) )/ 2. ;

即只需按照CellWidth正确设置Cell的尺寸既可以按照要求设置间距:

[flowLayout setItemSize:CGSizeMake(width, width * 410/300.)]; //设置cell的尺寸
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值