2017-05-30 69 views
13

UICollectionView很奇怪的问题...小的差距在UICollectionView部分出现

我有一个UICollectionView低于UIImageView,我注意到有在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 
+0

这个问题是出现在模拟器还是真实设备上? –

+0

它出现在两个可悲的...我希望这只是模拟器,但唉,不是。 – Magoo

+0

你可以请还包括视图的层次? (从UI查看器捕获或通过递归描述:方法) –

回答

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) 

} 

记得@ 2倍3倍@总是小区您的计算单元... UICollectionViews没本事0.5分

1

要在添加到@Magoo的答案:

CGSize结构有时使用代表距离矢量,而不是物理尺寸。作为一个向量,它的值可能是负值。为了规范CGRect结构,使其大小由正值表示,请调用标准化函数。

在斯威夫特2.x中,你将需要使用:

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

随着斯威夫特3,你可以不再使用CGSizeMake

return CGSize(width:collectionView.bounds.size.width,height:ceil(calculatedHeight) 
  • ceil功能UP数字舍入到如果需要,最近的整数。
  • 舍入时你有floor