随机UICollectionViewCell大小

时间:2017-09-20 18:50:33

标签: ios swift uicollectionview uicollectionviewcell

我有UICollectionViewController,我想让其中的单元格具有随机大小,但保持纵横比为16:9。我希望宽度范围从100到200.这是我到目前为止所尝试的:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {

    let widths = [100, 130, 200, 170, 150]

    let number = widths[Int(arc4random_uniform(UInt32(widths.count)))]

    return CGSize(width: number, height: (1080 / 1920) * number)

}

这不起作用,似乎所有单元格都具有相同的随机宽度。我希望他们都有不同的宽度。关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:0)

你没有获得单元格的原因是单元格的高度始终设置为零,因为在计算高度(1080/1920)*数字时,(1080/1920)的整数结果将始终为零所以数字乘以0将最终为单元格的高度0。请尝试以下代码。

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {

  let widths = [100, 130, 200, 170, 150]
  let number = widths[Int(arc4random_uniform(UInt32(widths.count)))]
  let height: Double = Double((1080 / 1920) * number)
  let size = CGSize(width: number, height: Int(height))
  return size
}