【问题标题】:Controlling the gap between cells in UICollectionViewController控制 UICollectionViewController 中单元格之间的间隙
【发布时间】:2017-04-05 11:22:28
【问题描述】:

我的单元格似乎有大约 20 个点的差距,我想控制这个值,但是我找到的关于这个问题的每个答案都不起作用。

我试过了:

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

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

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
    return UIEdgeInsets.zero
}

没有任何有用的输出,也:

layout.minimumLineSpacing = 0
layout.minimumInteritemSpacing = 0

这两行也没有帮助。

请注意,我没有使用情节提要!

【问题讨论】:

    标签: ios swift xcode uicollectionview uicollectionviewlayout


    【解决方案1】:

    试试这个

     func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionat section: Int) -> CGFloat {
    print("collectionView===\(collectionView)")
    print("collectionViewLayout===\(collectionViewLayout)")
    print("section===\(Int(section))")
    return 10.0
    }
    

    行距

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionat section: Int) -> CGFloat {
    print("collectionView===\(collectionView)")
    print("collectionViewLayout===\(collectionViewLayout)")
    print("section===\(Int(section))")
    return 10.0
    }
    
    
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionat section: Int) -> UIEdgeInsets {
    print("collectionView===\(collectionView)")
    print("collectionViewLayout===\(collectionViewLayout)")
    print("section===\(Int(section))")
    // return UIEdgeInsetsMake(0,8,0,8);  // top, left, bottom, right
    return UIEdgeInsetsMake(20, 20, 20, 20)
    // top, left, bottom, right
    }
    

    【讨论】:

      【解决方案2】:

      从逻辑上讲,间隙值应该基于单元格大小,编辑最小空格会导致行的显示方式。为了更清楚,请考虑(想象)以下场景:

      要求每行显示 2 个单元格,每个单元格的宽度应为屏幕宽度的一半,如果最小空间已设置为零,则输出将为:两个单元格都应填满屏幕宽度。

      到目前为止一切都很好,但是如果单元格的宽度应该大于屏幕宽度的一半(假设它应该是宽度的一半 + 2 个点)怎么办?输出将是:每行将仅包含 1 个单元格,旁边有一个与屏幕一半宽度的间隙 - 2 个点。

      因此,解决方案确保通过正确实现collection​View:​layout:​size​For​Item​At​Index​Path:​ 为单元格设置适当的大小。您可能想查看this Q&A 以了解如何实现它。

      【讨论】:

      • @DownVoter 请评论您对答案投票的理由,似乎您无缘无故地为所有给出的答案讽刺地这样做。
      【解决方案3】:

      在 uicollection 视图的属性中更改值.. 如下所示..

      【讨论】:

      • 谢谢,但我忘了说我没有使用故事板。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多