如何将Corner Radius设置为UIBezierPath

我使用此代码通过UIBezierPath创建了以下图像

  //// Bezier Drawing let bezierPath = UIBezierPath() bezierPath.move(to: CGPoint(x: 360, y: 0)) bezierPath.addCurve(to: CGPoint(x: 360, y: 75), controlPoint1: CGPoint(x: 359.53, y: 30.5), controlPoint2: CGPoint(x: 359.91, y: 55.45)) bezierPath.addCurve(to: CGPoint(x: 360, y: 153.78), controlPoint1: CGPoint(x: 360.35, y: 153.21), controlPoint2: CGPoint(x: 360, y: 153.78)) bezierPath.addCurve(to: CGPoint(x: 180, y: 153.78), controlPoint1: CGPoint(x: 360, y: 153.78), controlPoint2: CGPoint(x: 271.2, y: 212.77)) bezierPath.addCurve(to: CGPoint(x: 0, y: 153.78), controlPoint1: CGPoint(x: 88.8, y: 94.8), controlPoint2: CGPoint(x: 0, y: 153.78)) bezierPath.addLine(to: CGPoint(x: 0, y: 0)) bezierPath.addLine(to: CGPoint(x: 360, y: 0)) UIColor.green.setFill() bezierPath.fill() 

在此处输入图像描述

现在我想使用Slider将角半径TopRight此跟随图像的TopLeftTopRight

我试过以下代码,但它不适合我。

  var cornerPath = path cornerPath = UIBezierPath(roundedRect:self.imgTop.bounds, byRoundingCorners:[.topLeft, .topRight], cornerRadii: CGSize(width: CGFloat(cornerRadius), height: CGFloat(cornerRadius))) path.lineWidth = 1.0 let maskLayer = CAShapeLayer() maskLayer.path = cornerPath.cgPath self.imgTop.layer.mask = maskLayer 

  let maskLayerTop = CAShapeLayer() maskLayerTop.fillColor = UIColor.white.cgColor maskLayerTop.backgroundColor = UIColor.clear.cgColor maskLayerTop.path = pathTop?.cgPath maskLayerTop.cornerRadius = CGFloat(cornerRadius) //maskLayerTop.masksToBounds = true maskLayerTop.shadowRadius = CGFloat(cornerRadius) maskLayerTop.fillColor = UIColor.green.cgColor maskLayerTop.shadowColor = UIColor.blue.cgColor imgTop.layer.mask = maskLayerTop 

我还尝试将角半径应用于图像视图,但它没有工作。我想要像下面的图像一样的角半径。

在此处输入图像描述

请帮忙! 。

注意:我已经创建了一个路径来创建以下图像

在你的bezierPath = UIBezierPath()之前进行曲线添加

 var = cornerRadiudSize = CGSize(width: 50.0, height: 50.0) //this is your global variable that you can change based on the slider and then draw let p = UIBezierPath(roundedRect: rect, byRoundingCorners: .allCorners, cornerRadii: cornerRadiudSize) p.addClip() 

PS:而不是所有的角落设置你想要的角落

形象胜过千言万语