31

我正在使用单元格宽度为 67 的 UICollectionView,现在我正在使用流布局。

我连续有 3 个单元格,单元格之间有 30px 的空间。如何使该距离更小,以便我可以连续放置四个单元格?这个方法和它有关系吗?

 - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
 {
    return UIEdgeInsetsMake(10, 10, 10, 10);
 }
4

8 回答 8

44

这个 UICollectionViewFlowLayoutDelegate方法可以帮助你..

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionView *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section  
  {
    return 10; // This is the minimum inter item spacing, can be more
  }

如果您需要更多空间来安排单元格,请再edgeInsets调整

于 2013-03-20T04:13:37.837 回答
20

您可以使用以下属性配置单元格或行之间的间距。
1) 用于设置行之间的空间。

[self.collectionView setMinimumLineSpacing:5];

2)用于设置项目/单元格之间的空间。

[self.collectionView setMinimumInteritemSpacing:5];

您也可以从 InterfaceBuilder(IB) 配置它。只需从 storyboard/Xib 文件中选择 UICollectionView 并单击下图中指定的 Size Inspector 。在此处输入图像描述

于 2016-10-13T11:53:17.493 回答
18

从此。_ 您需要更改minimumInteritemSpacingminimumLineSpacing

UICollectionViewFlowLayout *flow = [[UICollectionViewFlowLayout alloc] init];
flow.itemSize = CGSizeMake(cellWidth, cellHeight);
flow.scrollDirection = UICollectionViewScrollDirectionHorizontal;
flow.minimumInteritemSpacing = 0;
flow.minimumLineSpacing = 0;
mainCollectionView.collectionViewLayout = flow;
于 2014-10-21T13:29:15.960 回答
11

不,它没有。只需更改布局的minimumInteritemSpacing.

于 2013-03-20T03:04:38.443 回答
6

您可以使用委托方法,例如:- 用于更改部分中单元格之间的空间。

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

用于显示不同部分的单元格之间的顶部、底部 y 填充。

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

// 布局:设置边缘 //为单元格设置插图

- (UIEdgeInsets)collectionView:
(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section 
//top,left,botttom,right
于 2014-09-09T05:14:36.650 回答
3

迅捷3.0

 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {

    if DEVICE_IDIOM == .pad {
        return 15.0
    }
    else {
        return 10.0
    }
}
于 2017-04-21T09:55:42.770 回答
2

我遇到过同样的问题..

就我而言,我需要一个矩形单元格。

为了达到预期的效果,我使用了UICollectionViewDelegateFlowLayout

这是我实现的方法之一:

- (CGSize)collectionView:(UICollectionView *)collectionView
                  layout:(UICollectionViewLayout*)collectionViewLayout
  sizeForItemAtIndexPath:(NSIndexPath *)indexPath;
{
    CGFloat width = CGRectGetWidth(self.view.frame)/3.0f;
    return CGSizeMake(width, (width * 1.1f));
}

这对我来说很好!我希望它可以帮助某人。

于 2015-10-16T03:37:21.020 回答
0

斯威夫特 4.2

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
   return 10
}

func collectionView(_ collectionView: UICollectionView, layout
            collectionViewLayout: UICollectionViewLayout,
                            minimumLineSpacingForSectionAt section: Int) -> CGFloat {

 return 10
}
于 2019-04-29T11:32:19.347 回答