在 UICollectionView 中每行显示 3 个项目

Posted

技术标签:

【中文标题】在 UICollectionView 中每行显示 3 个项目【英文标题】:Display 3 items per row in UICollectionView 【发布时间】:2021-05-03 16:51:41 【问题描述】:

我试图在集合视图中每行显示 3 个项目,但它始终显示 2 个项目。我已经阅读了一些关于这个主题的教程,但不知道我还需要做什么。故事板中是否缺少某些内容?如何解决?

extension HomeViewController: UICollectionViewDelegateFlowLayout 

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

        let widthPerItem = collectionView.bounds.width/3.0

        return CGSize(width: widthPerItem, height: widthPerItem)
    

  func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets 

        return UIEdgeInsets.zero
  

    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
    

【问题讨论】:

您是否将collectionView 估计大小设置为none? 是的,刚刚想通了。感谢您的提示。 【参考方案1】:

很可能,您不能设置集合视图的minimumInteritemSpacing

故事板: 转到故事板并选择您的收藏视图。在属性或比例选项卡中,您将看到 Min Spacing 将其设置为 0 以显示 3 个没有间距的单元格。

以编程方式:

let obj = UICollectionViewFlowLayout()
          obj.minimumInteritemSpacing = 0
          obj.minimumLineSpacing = 0

然后用上面的布局实例化 UICollectionView。

此外,您将集合视图宽度除以 3,这意味着您不希望单元格之间有任何间距(如果您想要一些空间,请将间距乘以 2,从宽度中减去,然后除以 3)。

【讨论】:

以上是关于在 UICollectionView 中每行显示 3 个项目的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UICollectionView 中每行显示 3 个单元格?

UICollectionView 水平分页仅在第一页上每行显示 3 个单元格

UICollectionView 行中的 2 个单元格

UICollectionView 不显示模拟器中的所有单元格

UICollectionView 项目间距不是恒定的

简单的UICollectionView显示图像表现奇怪:某些图像显示正确,有些图像位置错误,有些图像丢失