UICollectionView - 单元格之间的距离?

时间:2013-03-20 03:02:51

标签: ios objective-c uicollectionview storyboard uicollectionviewflowlayout

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

我连续有3个细胞,细胞间有30px的空间。如何减少距离,以便我可以连续安装四个细胞?这种方法与它有关吗?

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

8 个答案:

答案 0 :(得分:42)

UICollectionViewFlowLayoutDelegate方法可以帮助您..

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

如果您需要更多空间来安排细胞,还需要调整edgeInsets

答案 1 :(得分:18)

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

[self.collectionView setMinimumLineSpacing:5];

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

[self.collectionView setMinimumInteritemSpacing:5];

您也可以从InterfaceBuilder(IB)配置它。只需从storyboard / Xib文件中选择UICollectionView,然后单击大小检查器,如下图所示。 enter image description here

答案 2 :(得分:17)

来自this。 您需要更改 minimumInteritemSpacing minimumLineSpacing

UICollectionViewFlowLayout *flow = [[UICollectionViewFlowLayout alloc] init];
flow.itemSize = CGSizeMake(cellWidth, cellHeight);
flow.scrollDirection = UICollectionViewScrollDirectionHorizontal;
flow.minimumInteritemSpacing = 0;
flow.minimumLineSpacing = 0;
mainCollectionView.collectionViewLayout = flow;

答案 3 :(得分:9)

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

即可

答案 4 :(得分: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

答案 5 :(得分:3)

swift 3.0

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

    if DEVICE_IDIOM == .pad {
        return 15.0
    }
    else {
        return 10.0
    }
}

答案 6 :(得分: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));
}

这对我来说很好!我希望它有所帮助。

答案 7 :(得分:0)

Swift 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
}