UICollectionViewCells周围的等间距

时间:2016-01-20 19:13:29

标签: ios gridview layout uicollectionview uicollectionviewlayout

我希望所有单元格之间以及屏幕边框和最近单元格之间的间距相等。基本上是这样的。内部和周围的间距相等。

enter image description here

我设法通过设置这样的值在界面构建器中测试它。我将单元格大小设置为110,将最小间距设置为0,将所有 Section Insets 设置为10.

enter image description here

它在IB中看起来很完美。

enter image description here

然而,当我运行它(在iPad Air 2中)时,它看起来像这样。

enter image description here

请注意,单元格之间的间距更大。我还尝试通过从UICollectionViewDelegateFlowLayout实现以下方法,仅从代码中执行此操作。

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    return CGSize(width: 110, height: 110)
}

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
    return UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
}

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
    return 0
}

产生了相同的结果。有人可以告诉我如何纠正这个问题?我更喜欢用代码来做这件事。但我对任何事情都持开放态度。

1 个答案:

答案 0 :(得分:2)

不幸的是,这是UICollectionViewFlowLayout默认工作的方式。这是因为您指定了精确的部分插入,但最小的插入空间。 要做你要求的事情,你主要有两种方法可以根据你想要的最终结果来做。两者都必须通过代码手动完成。

•放大细胞离开确切的空间(相同的空间,更大的细胞)

•计算空间并更改插图以匹配它(相同的单元格,更大的空间)

两者都可以通过设置布局对象上的值(并使其无效)或通过委托返回值来完成。