减少UICollectionView中的interitem间距

时间:2017-01-17 12:35:44

标签: ios iphone swift uicollectionview uicollectionviewlayout

我已经抬头了: -

UICollectionView distance between cells?

Cell spacing in UICollectionView

Decrease Space between UICollectionViewCells

但他们都没有为我工作。

我也尝试过实现UICollectionViewDelegateFlowLayout并实现

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

但它对它没有任何影响。

请看一下iPhone 7 / iPhone 5s / iPhone 7 Plus中的以下截图(图片顺序相同)

iPhone 7

iPhone 5S

iPhone 7 Plus

我也看起来自我调整细胞,但我不想要自我调整细胞,因为我的项目大小总是固定的并且符合我的要求。

我还在故事板中设置了最小单元格间距,但它对布局没有影响。

如何减少两个单元格之间的巨大差距(interitem间距),避免iPhone 5S中的剪裁以及iPhone 7 Plus中右侧的空白区域(您无法看到背景是白色的)

任何见解都将受到赞赏。

3 个答案:

答案 0 :(得分:3)

如果你的细胞大小是“固定的”,你就不能避免这个差距,因为你已经硬编码固定的宽度!

您需要计算collectionView.frame的总宽度并将其除以2,并且还要包括项目之间的间距,而不是“固定”大小。快速键入的示例:

(计算细胞大小)

CGFloat spacing = 3.0f
CGFloat itemWidth = collectionView.frame.size.width / 2 - spacing
CGSize totalSize = itemWidth, itemWidth

答案 1 :(得分:0)

尝试在width方法中设置每个单元格的heightsizeForItemAtIndexPath

- (CGSize)collectionView:(UICollectionView *)collectionView
                  layout:(UICollectionViewLayout *)collectionViewLayout
  sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    CGRect screenRect = [[UIScreen mainScreen] bounds];
    CGFloat screenWidth = screenRect.size.width;
    float cellWidth = screenWidth / 2.0; //Replace the divisor with the column count requirement. Make sure to have it in float.

    CGFloat screenHeight = screenRect.size.height;
    screenHeight = screenHeight - 114.0; // Sum of Bottom View & Top View Height

    float cellHeight = screenHeight /(totalArray.count/2);  //totalArray contains item used to show in collectionview

    if(DEFAULT_CELL_HEIGHT > cellHeight){
        cellHeight=DEFAULT_CELL_HEIGHT;
    }

    CGSize size = CGSizeMake(cellWidth, cellHeight);

    return size;
}

答案 2 :(得分:0)

@Hauzin的答案很好,可以摆脱不同设备的间距。对于单元格之间的间距( minimumInteritemSpacingForSectionAt ),您是否使视图控制器符合此协议( UICollectionViewDelegateFlowLayout )?