ios 如何在给定的内容模式下调整UIImage的大小?

0vvn1miw  于 2022-12-15  发布在  iOS
关注(0)|答案(1)|浏览(118)

如何使用ContentMode来调整UIImage的大小?也就是说,不仅仅是调整它的大小以保持它的纵横比,而是在给定目标大小的情况下,使用所需的选项(scaleAspectFill / Fit / etc)来调整它的大小。

h79rfbju

h79rfbju1#

最简单、最快捷的方法是使用UIImageView并对其进行快照:

extension UIImage {
    func resizedImage(targetSize: CGSize, contentMode: UIView.ContentMode) -> UIImage {
        let imgView = UIImageView(image: self)
        imgView.contentMode = contentMode
        imgView.frame = .init(origin: .zero, size: targetSize)
        return imgView.snapshot()
    }
}

extension UIView {
    func snapshot() -> UIImage {
        let format = UIGraphicsImageRendererFormat(for: .current)
        let renderer = UIGraphicsImageRenderer(bounds: bounds, format: format)
        return renderer.image { [self] context in
            layer.render(in: context.cgContext)
        }
    }
}

相关问题