swift 中的圆形图像

round image in swift

我正在尝试使图像变圆。我一直使用 maskCircle 但这次它不起作用。我在 UICollectionViewCell 的 awakeFromNib 中编写了代码,但我无法使用 viewDidLayoutSubviews,因为我在 cellForItemAt 函数中将单元格出队。所以这是代码:

@IBOutlet weak var storeLogo: UIImageView!
override func awakeFromNib() {
    super.awakeFromNib()
    storeLogo.maskCircle()
    storeLogo.clipsToBounds = true
}

并且 imageView 看起来像这样: imageView

编辑: 它似乎工作正常,但我又遇到了问题。 这是现在 awakeFromNib 中的代码:

    super.awakeFromNib()
    storeLogo.clipsToBounds = true
    storeLogo.layer.cornerRadius = storeLogo.frame.width / 2

    let gradient = CAGradientLayer()
    gradient.frame = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: 55, height: 55))
    gradient.startPoint = CGPoint(x: 0, y: 1)
    gradient.endPoint = CGPoint(x: 1, y: 0)
    gradient.colors = [Color.storeName?.cgColor, Color.idTint?.cgColor]

    let shape = CAShapeLayer()
    shape.lineWidth = 2
    let radius: CGFloat = 27
    shape.path = UIBezierPath(roundedRect: CGRect(x: -2.5, y: -14, width: 2.0 * radius, height: 2.0 * radius), cornerRadius: radius).cgPath
    shape.position = CGPoint(x: self.frame.midX - radius, y: self.frame.midY - radius)
    shape.strokeColor = UIColor.black.cgColor
    shape.fillColor = UIColor.clear.cgColor
    gradient.mask = shape

    self.storeLogo.layer.addSublayer(gradient)

并且图片不是圆形的,正如您在这张图片中看到的那样:imageView 我

我不知道为什么图片现在不是圆了。有什么想法吗?!

如果您想在 UIImageView 上做圆形剪辑,请设置 cornerRadius of UIImageView

storeLogo.layer.cornerRadius = storeLogo.frame.width / 2
storeLogo.clipsToBounds = true