Я создал следующее изображение 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()
Теперь я хочу указать радиус угла для TopLeft и TopRight этого следующего изображения с помощью ползунка.
Я пробовал следующий код, но у меня он не сработал.
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
Я также пытался применить радиус угла к представлению изображения, но это не сработало. Я хочу радиус угла, как на следующем изображении.
Пожалуйста помоги! .
.
ПРИМЕЧАНИЕ: Я уже создал один путь для создания следующего изображения
@IraniyaNaynesh Не работает





перед тем, как вы позволите 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: Вместо всех углов установите нужные углы
Привет, спасибо за твои усилия. Не могли бы вы прислать мне свой проект?
в проекте нет ничего, только один файл, который я уже опубликовал
Я использовал ваш код, и он отлично работает с представлением, но я хочу сделать это с помощью изображения, я пытался добавить изображение, но это не сработало. Не могли бы вы мне помочь?
Я не знаю, что вы можете добавить путь к изображению, но можете сделать это в imageView
почему вы не можете просто сделать yourImageView.layer.cornerRadius = 30? вам не нужно создавать путь для этого
Это не сработает, потому что я создаю приложение для редактирования фотографий, поэтому я использую путь для слоя Curve, и я пробовал использовать image.layer.cornerRadius, но он удалит кривую из моего изображения
Позвольте нам продолжить обсуждение в чате.
@IraniyaNaynesh Пожалуйста, запросите подтверждение этого демонстрационного кода.
@Digvijay Что? не понял
@IraniyaNaynesh Мне нужен zip-файл с демонстрацией вашего диска. Я могу скачать демо по этой ссылке.
@Digvijay Извините, но я не поделился ссылкой на диск, также, как я сказал ранее, есть только один файл imp и код, который уже прикреплен выше. Если вы в чем-то застряли, скажите, что если смогу, я обязательно помогу. Спасибо.
IOS 14, версия swift 5
let bezierPath = UIBezierPath(roundedRect: shareContainerView.bounds, byRoundingCorners: [.topLeft, .topRight], cornerRadii: CGSize(width: 4, height: 4))
let maskLayer = CAShapeLayer()
maskLayer.path = bezierPath.cgPath
shareContainerView.layer.mask = maskLayer
вы установили для вида клип привязку к истине? self.imgTop.clipsToBounds = true