我面临UICollectionView
的问题。我希望所有单元格的大小都应固定。但我无法达到要求。
这是我的代码:
private var totalColumns: Int = 3
private var cellSpace: CGFloat = 10.0
private var width: CGFloat {
var temp = (CGFloat(self.totalColumns - 1) * self.cellSpace)
temp = (self.collectionPreference?.frame.size.width ?? SCREEN_WIDTH) - temp
temp = temp / CGFloat(totalColumns)
return temp
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: width, height: width)
}
// func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
// return UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
// }
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return cellSpace
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return cellSpace
}
在iOS 13
之前,我可以用相同的代码来实现相同的UI(当时我正在搜索如何根据其内容设计单元格)。现在在iOS 13
中,我正在努力实现固定大小的UI。...非常有趣...
任何人都有解决方案吗?
尝试一下:
override func viewDidLoad() {
super.viewDidLoad()
let cellSize = CGSize(width:80 , height:80) // your cell size
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .vertical //.horizontal
layout.itemSize = cellSize
layout.sectionInset = UIEdgeInsets(top: 1, left: 1, bottom: 1, right: 1)
layout.minimumLineSpacing = 1.0
layout.minimumInteritemSpacing = 1.0
collectionPreference.setCollectionViewLayout(layout, animated: true)
collectionPreference.reloadData()
}