任何人都可以帮助我吗...!我只想为图像设置角半径,并且图像必须适合 AspectFit 比例。
如果我提供scaleToFill模式,我可以使用下面的代码并且它工作正常。但图像被拉伸了。
self.productImg.layer.cornerRadius = 7
self.productImg.clipsToBounds = true
但是当将比例提供给 AspectFit 时,它显示如下图所示。
显示的绿色是图像视图,其中图像设置为aspectFit。
实际图像
给出aspectFit模式时的图像
我需要实际给出的图像,而且它必须带有圆角半径。所以请任何人给我一个解决方案来解决这个问题。
提前致谢...!
这里是 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
}
}
用途:
yourUIImage.withRoundedCorners(radius: 10)
您可以尝试 AspectFill 模式,而不是 AspectFit。 使用AspectFill,图像将完全填充imageView,并且会有圆角。
与安东的答案类似,但有一点小小的不同:
将 UIImageView 放入通用 UIView 中,该 UIView 充当您可以控制其角半径的容器。
示例:
let containerView = UIView()
containerView.layer.cornerRadius = 15
containerView.layer.masksToBounds = true //maybe not necessary
//set some width and height in a CGRect()
let imageView = UIImageView()
containerView.addSubview(imageView)
imageView.frame = containerView.bounds
imageView.contentMode = .scaleAspectFill