如何在iOS Swift中将角半径设置为UIImage而不是UIImageView

Abi*_*ala 1 image cornerradius uiimageview ios swift

谁能帮我...!我只想为图像设置拐角半径,并且图像也必须适合AspectFit比例尺。

如果我给scaleToFill模式,我可以使用下面的代码及其工作正常。但是图像被拉伸了。

self.productImg.layer.cornerRadius = 7
self.productImg.clipsToBounds = true
Run Code Online (Sandbox Code Playgroud)

但是,将比例尺给AspectFit时,如下图所示。

显示的绿色是图像视图,在该图像中图像设置为AspectFit。

实际形象

实际图像

提供AspectFit模式时的图像

提供AspectFit模式时的图像

我需要图像,因为它实际上是给定的,并且还必须具有拐角半径。因此,请任何人给我解决方案以解决此问题。

提前致谢...!

ast*_*hik 6

这是UIImage的扩展,可以为其设置转角半径,而不处理UIImageView。

 extension UIImage {
        // image with rounded corners
        public func withRoundedCorners(radius: CGFloat? = nil) -> UIImage? {
            let maxRadius = min(size.width, size.height) / 2
            let cornerRadius: CGFloat
            if let radius = radius, radius > 0 && radius <= maxRadius {
                cornerRadius = radius
            } else {
                cornerRadius = maxRadius
            }
            UIGraphicsBeginImageContextWithOptions(size, false, scale)
            let rect = CGRect(origin: .zero, size: size)
            UIBezierPath(roundedRect: rect, cornerRadius: cornerRadius).addClip()
            draw(in: rect)
            let image = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
            return image
        }
    }
Run Code Online (Sandbox Code Playgroud)

用法:

yourUIImage.withRoundedCorners(radius: 10)
Run Code Online (Sandbox Code Playgroud)

  • 仅代码答案不是答案;请提供说明(并正确设置格式)。 (2认同)