且看代码:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
// 修复cell间隙
// 4 表示每一行4个cell
NSInteger width = collectionView.bounds.size.width / 4.0;
NSInteger num = (NSInteger)collectionView.bounds.size.width % 4;
if (indexPath.row < num) {
width = width + 1;
}
return CGSizeMake(width, 118);
}
原理:
如果是平均分配宽度,以CGFloat为单位得到的将是小数。但是苹果手机屏幕像素不能准确地根据小数来显示,在这里做一下取舍。cell的宽取整数,后面的num是collectionView分配给各个cell宽度后余下的像素的点数。然后把剩下的点数分别赋值给最前面的cell,就是width = width + 1