如何将UICollectionViewCell高度设置为View(Screen)高度的90%?

时间:2016-12-09 18:29:16

标签: swift uicollectionview uicollectionviewcell uicollectionviewlayout

我正在尝试将UICollectionViewCell高度设置为屏幕大小的90%。因此,当使用不同的设备时,单元尺寸会很好。

问题是我不确定如何以编程方式设置单元格高度。所有单元格应该看起来大小相同,因此不需要考虑内容,我只希望单元格高度为屏幕的90%。

以下是iphone 6屏幕的样子: enter image description here

但是,当切换到较小的设备时,它看起来像这样: enter image description here

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

您可以通过编程方式设置UICollectionView的流量布局图块大小。有几个不同的地方你可能会导致这种情况,我会从viewWillAppear开始(在你的ViewController类中)作为初学者:

override func viewWillAppear() {
    super.viewWillAppear()
    if let layout = self.schedulesView.collectionViewLayout as? UICollectionViewFlowLayout {
        var cellSize = UIScreen.main.bounds.size // start with the full screen size
        cellSize.height *= 0.9 // adjust the height by 90%
        layout.itemSize = cellSize // set the layouts item size
    }
}

答案 1 :(得分:1)

您可以根据collectionView使用itemSize设置collectionViewFlowLayout device size。尝试以下方法..

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
   // All the values are changable according to your needs.
    let layout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
    layout.sectionInset = UIEdgeInsets(top: 25, left: 3, bottom: 3, right: 3)
    layout.minimumInteritemSpacing = 50
    layout.minimumLineSpacing = 50
    return CGSize(width: self.collectionView.frame.width - 50, height:self.collectionView.frame.height - 100)
}

注意:从上面的代码中,您将获得框类型collectionView itemSize,它会根据设备大小覆盖视图。

答案 2 :(得分:0)

刚刚想到UICollectionViewCell内容没有更新其大小的问题。

只需要将其作为UICollectionViewCell的子类

override var bounds: CGRect {
    didSet {
      contentView.frame = bounds
    }
}