所以基本上我有一个如下所示的 Collection View 布局:
这是一个每行 3 个图像,彼此非常接近,就像 Instagram 一样。这里的问题是,当我使用 iPad 或 iPhone SE 等较小的手机时,布局会扭曲。这就是它在 ipad 上的样子
Collection View 布局代码是这样的:
func callCustomFlowLayout(collectionView: UICollectionView) {
let flow = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
let itemSpacing: CGFloat = 1
let itemsInOneLine: CGFloat = 3
flow.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0)
let width = UIScreen.main.bounds.size.width - itemSpacing * CGFloat(itemsInOneLine - 1) //collectionView.frame.width is the same as UIScreen.main.bounds.size.width here.
flow.itemSize = CGSize(width: floor(width/itemsInOneLine), height: width/itemsInOneLine)
flow.minimumInteritemSpacing = 1
flow.minimumLineSpacing = 1
}
感谢您以后的任何帮助。我只是希望每行 3 个图像,并根据设备的大小调整图像大小。
这是我的布局代码
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let cellsAcross: CGFloat = 3
let spaceBetweenCells: CGFloat = 1
let dim = (collectionView.bounds.width - (cellsAcross - 1) * spaceBetweenCells) / cellsAcross
return CGSize(width: dim, height: dim)
}
最佳答案
像这样重写 UICollectionView:
class UICollectionViewCustom: UICollectionView {
public override var bounds: CGRect {
didSet {
collectionViewLayout.invalidateLayout()
}
}
}
每当调整 collectionView 大小时,都会更新 collectionView 布局。
关于ios - 如何在所有设备中快速布局每行三个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51123011/