【问题标题】:How to remove space between cells in UICollectionView? [duplicate]如何删除 UICollectionView 中单元格之间的空间? [复制]
【发布时间】: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);
    }
}

但这不起作用。

【问题讨论】:

    标签: ios objective-c uicollectionview


    【解决方案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
            }
            

            【讨论】: