如何删除 UICollectionView 中单元格之间的空间? [复制]

Posted

技术标签:

【中文标题】如何删除 UICollectionView 中单元格之间的空间? [复制]【英文标题】:How to remove space between cells in UICollectionView? [duplicate] 【发布时间】:2017-07-13 18:39:51 【问题描述】:

如何删除UiCollectionView 中两个单元格之间的空格?最小间距不起作用。

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

    if (collectionView.tag==101)
    
        return CGSizeMake((_collView.frame.size.width),(_collView.frame.size.height));

    
    else
    
       return CGSizeMake((_collView2.frame.size.width/3)-20,300);
    

但这不起作用。

【问题讨论】:

【参考方案1】:

* *

将单元格和行的最小间距设置为零 并将您的代码替换为

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

if (collectionView.tag==101)

    return CGSizeMake((_collView.frame.size.width),(_collView.frame.size.height));

else

   return CGSizeMake((_collView2.frame.size.width/3),300);

 

【讨论】:

【参考方案2】:

将 UICollectionViewFlowLayout 用于这些目的:

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

【讨论】:

【参考方案3】:

这是因为 UICollectionviewFlowLayout 的工作原理。您可以提供自定义 collectionview 布局: Left Align Cells in UICollectionView

或使用 3d 派对解决方案: https://github.com/mokagio/UICollectionViewLeftAlignedLayout

【讨论】:

【参考方案4】:

使用此代码,根据您的设计调整宽度和高度。

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

CGSize s = CGSizeMake([[UIScreen mainScreen] bounds].size.width/2-10,
[[UIScreen mainScreen] bounds].size.height/2.9-7);
return s;
 

下面的代码调整集合视图的边缘

- (UIEdgeInsets)collectionView:
(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section 
return UIEdgeInsetsMake(2, 6,2, 6);

使用两个代理并更改宽度和高度

【讨论】:

【参考方案5】:

UICollectionViewFlowLayoutDelegate 中称为 minimumInteritemSpacingForSectionAtIndex 的方法可以帮助您。 minimunIteritemSpace 设置项目之间的空间水平,例如试试这个代码:

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

您也可以使用edgeInsets 更改项目之间的空间。

【讨论】:

这将连接列,行仍将被分隔。【参考方案6】:
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section



return 10.0;


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



return 10.0;

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



// return UIEdgeInsetsMake(0,8,0,8);  // top, left, bottom, right
return UIEdgeInsetsMake(20,20,20,20);  // top, left, bottom, right

【讨论】:

以上是关于如何删除 UICollectionView 中单元格之间的空间? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionView-如何删除第一个单元格上方的间距?

如何删除 UICollectionView Flow 布局大小中的单元格空间?

如何在 UICollectionView 拖放期间删除“幽灵”单元格,并使移动单元格不透明?

在 UICollectionView 中删除单元格后,如何更新作为 UICollectionViewCell 一部分的按钮标签?

UICollectionView如何删除单元格(相当于commitEditingStyle)?

如何删除 UICollectionView 单元格中的单个对象?