集合视图单元格中的自定尺寸图像

时间:2018-10-31 02:56:59

标签: swift uicollectionview uicollectionviewcell uicollectionviewlayout uicollectionviewflowlayout

我想将照片添加到我的收藏夹视图单元格中的一种,类似于Snapchat的操作方式...

enter image description here

只有两个主要要求:

  1. 照片的数量会有所不同,因此整个单元格的高度也必须有所不同。

  2. 每张照片应保持其纵横比。

我最初的想法是将要显示的图像数组放在单元出队之前,计算每个单元的大小,保持其长宽比,然后使用该数据在单元内部的集合视图中显示图像。但是,我的结果缺乏。

图像似乎尺寸正确,但是UICollectionViewFlowLayout处理的图像布局无法正确放置图像

enter image description here enter image description here

这里是计算尺寸的方法。

func calculateImageSize(images: [UIImage], bounds: CGRect) -> [CGSize] {

    var imageSizes: [CGSize] = []

    var imageWidth: Int!
    var imageHeight: Int!
    var aspectRatio: CGSize!
    var convertedRect: CGRect!

    for i in 0..<images.count {

        imageWidth = images[i].cgImage?.width
        imageHeight = images[i].cgImage?.height

        aspectRatio = CGSize(width: imageWidth, height: imageHeight)
        convertedRect = AVMakeRect(aspectRatio: aspectRatio, insideRect: bounds)

        imageSizes.append(CGSize(width: convertedRect.width, height: convertedRect.height))
    }
return imageSizes
}

最小行距和项目间距都设置为零。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我认为这与图像尺寸无关。这是您需要自定义的布局。我进行了快速搜索,发现该库可能有帮助:https://github.com/rubygarage/collection-view-layouts