UICollectionView部分中出现小间隙

时间:2017-05-30 08:30:56

标签: ios swift uicollectionview

UICollectionView上的奇怪问题...

UIImageView低于UICollectionView,我注意到collectionView ...中某些点出现了多条细线/ 1px清晰线...一条出现在描述单元格下方。 ..

first

假设这是一个细胞问题,我已经调查过每一个我无法思考的方式。我已将此单元格加倍,以说明问题发生在IndexPath 第1部分第6项和第7项

之间

即使此单元格加倍...下面的分隔线单元格也是同一section的一部分,所以它绝对不是页脚或标题???

second

我的flowLayout是

flowLayout.scrollDirection = .vertical
flowLayout.minimumInteritemSpacing = 0.0
flowLayout.minimumLineSpacing = 0.0
flowLayout.sectionInset = UIEdgeInsetsMake(0.0, 0.0, 0.0, 0.0)
flowLayout.headerReferenceSize = .zero
flowLayout.footerReferenceSize = .zero

我制作了collectionView红色的背景来突出问题......我不知道问题是什么。

查看层次结构

view

更新

flowLayout.minimumLineSpacing = 0.0更改为-1.0'修复了某些地方的问题...为什么这个值在所有单元格中都不会保持准确?并保持在0.0 ??

flowLayout.scrollDirection = .vertical
flowLayout.minimumInteritemSpacing = 0.0
flowLayout.minimumLineSpacing = -1.0
flowLayout.sectionInset = .zero

3 个答案:

答案 0 :(得分:9)

我只是去了并解决了......在给予300美元赏金之后数小时......

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

 // calculated CGSize...

  return CGSize(width:collectionView.bounds.size.width,height:ceil(calculatedHeight) 

}

记住@ 2x @ 3x总是 ceil 你的计算单元格... UICollectionViews无法破解0.5分

答案 1 :(得分:1)

添加@Magoo的答案:

CGSize结构有时用于表示距离矢量,而不是物理尺寸。作为矢量,其值可以是负数。要标准化CGRect结构以使其大小由正值表示,请调用标准化函数。

在Swift 2.x中,您需要使用:

return CGSizeMake(width:collectionView.bounds.size.width,height:ceil(calculatedHeight)

从Swift 3开始,您无法再使用CGSizeMake

return CGSize(width:collectionView.bounds.size.width,height:ceil(calculatedHeight)
  • 如果需要,ceil函数将数字UP舍入到最接近的整数。
  • 对于四舍五入,您有floor

答案 2 :(得分:0)

我尝试了所有答案,但没有任何效果。最后,我最终调整了我的 collectionView 宽度,使单元格的数量均匀地划分到其中。

这为我解决了问题。

// Adjust the width of the collectionView, so that our cells divide evenly into it
CGFloat widthModulus = fmod(collectionViewWidth, numberOfCells);
CGFloat newCollectionViewWidth = collectionViewWidth - widthModulus;