【问题标题】:Small gaps appearing in UICollectionView sectionUICollectionView 部分出现小间隙
【发布时间】:2017-05-30 08:30:55
【问题描述】:

UICollectionView 上非常奇怪的问题...

我在UICollectionView 下方有一个UIImageView,我注意到在collectionView 的某些点上出现了多条细线/1px 清晰的线条……一个出现在描述单元格下方……

假设这是细胞的问题,我已经调查了所有我能想到的方式,但并不高兴。我将这个单元格加倍以说明问题发生在 IndexPath 第 1 节第 6 和 7 项

之间

即使这个单元格被加倍...下面的分隔线单元格是同一section 的一部分,所以它绝对不是页脚或页眉???

我的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 的背景设为红色以突出问题...我不知道问题是什么。

查看层次结构

更新

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

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

【问题讨论】:

  • 这个问题是模拟器还是真机出现?
  • 可悲地出现在两者上......我希望它也只是模拟器,但可惜不是。
  • 能否请您也包括视图的层次结构? (从 UI 查看器或通过 recursiveDescription: 方法捕获)
  • 哪个视图?这绝对是collectionView单元格之间的间距问题......或者肯定与flowlayout相关的高度?
  • 嗯?哪条线??红色的

标签: ios swift uicollectionview


【解决方案1】:

我只是去解决它...在悬赏 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分

【讨论】:

    【解决方案2】:

    补充@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 函数会将数字向上舍入为最接近的整数。
    • 对于四舍五入,您有 floor

    【讨论】:

      【解决方案3】:

      我尝试了所有答案,但对我没有任何帮助。最后,我最终调整了我的 collectionView 宽度,以便将单元格的数量平均划分为它。

      这为我解决了问题。

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

      【讨论】:

        猜你喜欢
        • 2016-01-23
        • 2013-01-28
        • 1970-01-01
        • 2019-09-22
        • 2018-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多