ios - 如何在所有设备中快速布局每行三个图像

标签 ios swift uicollectionview ios-autolayout

所以基本上我有一个如下所示的 Collection View 布局:

enter image description here

这是一个每行 3 个图像,彼此非常接近,就像 Instagram 一样。这里的问题是,当我使用 iPad 或 iPhone SE 等较小的手机时,布局会扭曲。这就是它在 ipad 上的样子

enter image description here

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/

相关文章:

c# - 使用单点触控将多页文本绘制为 pdf

iPhone:根据位置排序

ios - 在两个 Action 之间随机选择并每隔一定时间重复一次

ios - 在 Swift 中在现有层下面插入子层时出现问题?

ios - 当应用程序处于非事件状态或在后台时停止当前推送通知

ios - 当我转到主屏幕时,使用 Facebook 登录 SDK 的应用程序崩溃

ios - 如何将 ImageSliderViewController 转换为 Swift 2

ios - 滚动后在 Collection View 中查看更新太迟

swift - 如何使用 push segues 处理两个 Collection View

ios - View 转换后调整 UICollectionView 的大小