我正在尝试将UICollectionViewCell高度设置为屏幕大小的90%。因此,当使用不同的设备时,单元尺寸会很好。
问题是我不确定如何以编程方式设置单元格高度。所有单元格应该看起来大小相同,因此不需要考虑内容,我只希望单元格高度为屏幕的90%。
提前感谢您的帮助!
答案 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
}
}