【问题标题】:Increase size of spacing between cells in collection view增加集合视图中单元格之间的间距大小
【发布时间】:2018-04-12 13:58:38
【问题描述】:

我希望我的 collectionview 中的单元格之间有不同的间距。

我的收藏视图只包含一个部分。我知道可以更改部分之间的间距,但我会喜欢单元格之间的间距。

我希望居中单元格与其侧面之间的间距更大,并且其他单元格的间距不会移动。基本上,我的白色圆圈在不改变所有间距的情况下不会触及相邻单元格的边缘。

我的问题的图片在这里:

有解决办法吗?

【问题讨论】:

  • @the4kman 否,因为如果我使用本主题中指定的 collectionView:layout:minimumInteritemSpacingForSectionAtIndex 这个方法,修改的间距会影响所有单元格

标签: ios swift uitableview uicollectionview cell


【解决方案1】:

你可以在你的视图控制器中实现这个方法:collectionView:layout:minimumInteritemSpacingForSectionAtIndex

【讨论】:

  • 嗨,是的,但我只有一个部分包含我的单元格,就像 collectionView:layout:minimumLineSpacingForSectionAt 我无法修改特定间距。谢谢你的回答
【解决方案2】:

您可以尝试创建 3 个不同的部分。

  1. 1st Section - 包含较大单元格之前的单元格的部分,inter item spacing as 10
  2. 第二部分 - 包含较大单元格的部分,带有section insets as (top: 0, left: 20, bottom: 0, right: 20)
  3. 第 3 部分 - 包含较大单元格之后的单元格的部分,带有 inter item spacing as 10

您可以根据需要更改这些值。

代码如下:

func numberOfSections(in collectionView: UICollectionView) -> Int
{
    return 3
}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
    if section == 1
    {
        return 1
    }
    return 2
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
    if indexPath.section == 1
    {
        cell.backgroundColor = UIColor.red
    }
    return cell
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
{
    if indexPath.section == 1
    {
        return CGSize(width: 100, height: 100)
    }
    return CGSize(width: 82, height: 82)
}

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

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets
{
    if section == 1
    {
        return UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 20)
    }
    return .zero
}

截图:

如果您仍然遇到任何问题,请告诉我。

【讨论】:

  • 谢谢你的提示,我会努力的,我会回复你的最终结果:)
  • 当然。如果你得到它的工作接受答案。快乐编码?。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 2018-07-30
相关资源
最近更新 更多