【问题标题】:Adjust UICollectionView Size Dynamically to Ensure No Inter Item Spacing动态调整 UICollectionView 大小以确保没有项目间距
【发布时间】:2015-10-17 01:56:51
【问题描述】:

目标是让 UICollectionView 每行具有特定数量的列,而不管屏幕大小。

目前我正在使用:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
{
    //print(collectionView.frame.size.width)
    let numberRows:CGFloat = 7
    return CGSize(width: collectionView.frame.size.width/numberRows, height: collectionView.frame.size.width/numberRows)
}

设置单元格的大小,以便它们可以容纳在集合视图中而没有项目间距。但是,集合视图的大小是根据屏幕大小的百分比设置的。如果所需的“numberRows”不均分,则单元格之间会有间距。

如何动态更改集合视图的大小以确保单元格适合而没有间距?如何以更有效的方式实现这一点?

【问题讨论】:

  • 您解决了这个问题吗?我遇到了同样的问题,还没有找到答案。

标签: ios xcode swift uiscrollview uicollectionview


【解决方案1】:

当您设置集合视图的大小时,您可以将其向下舍入为 numberRows 的倍数。这确保了它会平均分配。

如果您使用 AutoLayout,您可以设置集合视图的宽度或高度约束。然后拨打layoutSubviews:setNeedsLayout

如果您不使用 AutoLayout,您可以使用 setFramesetBounds 更改集合视图的大小。

【讨论】:

    【解决方案2】:

    你不能在这里打破数学规则。如果你得到一个点/像素太多,你不能把这个像素分成两个半像素。

    你可以做的是:

    • 相应地调整集合视图的大小,使单元格的数量完美匹配

    • 接受其中一个单元的大小比其他单元大/小一个像素。 (例如行中的最后一个单元格)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多