【问题标题】:UICollection horizontally scroll, so reduce the space between cell item [closed]UICollection 水平滚动,因此减少单元格项目之间的空间
【发布时间】:2018-01-05 07:08:44
【问题描述】:

我使用 UICollectionView 并设置水平滚动。现在在这一个图像视图中,除了单元格间距外,所有工作都完美无缺。在 collectionView 中,我为单元格 0(零)设置了最小间距。但是 Spaces 仍然存在。

我的输出是这样的..

但我需要这种类型的输出..

还有一件事是我参考了这么多答案,但仍然不知道该怎么做。我使用 Xcode 7.0,所以我需要 swift 2.0 中的解决方案,如果可能的话,还要求在 swift 3.0 中给出答案。 请帮我。提前致谢。

【问题讨论】:

  • 你用代码试过了吗?检查这个:stackoverflow.com/questions/28325277/…
  • func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat { return 0 } func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) - > CGSize { return CGSize(width: 155, height: 155) } 我也放了 UICollectionViewDelegateFlowLayout 这个方法但是还是不行..
  • 你确定委托人被叫到了吗??
  • 尝试在我提供的链接中显示的viewDidLoad
  • Yaa.. 我把断点放在那里.. 所以方法调用但不工作。

标签: ios swift uicollectionview swift2 uicollectionviewcell


【解决方案1】:

试试这个

别忘了设置collectionview flowlayout delegate

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
            return CGSize(width: collectionViewTable.bounds.size.width/2 - 20, height: 160)

         }

func collectionView(_ collectionView: UICollectionView,
                        layout collectionViewLayout: UICollectionViewLayout,
                        insetForSectionAt section: Int) -> UIEdgeInsets
    {
        return  UIEdgeInsetsMake( 5,  14, 5,  14)
    }
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
        return 20;
    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
        return 20;
    }

【讨论】:

  • 我引用了很多代码,但都是关于垂直滚动的。我的滚动是水平的
  • 你必须更改值并测试我没有按照你的要求测试你可以显示屏幕截图吗?
  • Ya.. 这可以工作,但是当我在 UICollectionViewFlowLayout 的帮助下将代码放入 viewDidload() 时,那段时间不起作用
  • 我只有 cellItem 之间的间距更大的问题。
【解决方案2】:

在您的代码中添加以下方法并进行操作,直到您想要的输出。

func collectionView(_ collectionView: UICollectionView,
                        layout collectionViewLayout: UICollectionViewLayout,
                        sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: CGFloat(collectionView.frame.size.width/ 2 - 5), height: CGFloat(135)) // 2 is indicates number of cell in row
    }

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

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

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

【讨论】:

    【解决方案3】:

    我的代码都很好。但我不会输出我想要的东西,所以我尝试了新的东西——负值

    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
            return -20;
        }
    

    因此,仅使用这一种具有负值的方法,我就会得到我想要的输出。 感谢所有尝试为我解决此错误的人...

    【讨论】:

      【解决方案4】:

      您可以在尺寸检查器中设置单元格和行间距。

      您也可以从UICollectionViewDelegateFlowLayout设置。

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2019-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-14
        相关资源
        最近更新 更多