Код: Выделить всё
let view = UIView(
frame: CGRect(origin: .zero, size: CGSize(width: 500.0, height: 500.0))
)
view.backgroundColor = .clear
let shapeLayer = CAShapeLayer()
shapeLayer.frame = view.bounds
shapeLayer.fillColor = UIColor.systemMint.cgColor
let mainPath = UIBezierPath(
roundedRect: CGRect(
origin: CGPoint(x: 50.0, y: 50.0), size: CGSize(width: 400.0, height: 400.0)
),
cornerRadius: 10.0
)
let cutOutArc = UIBezierPath()
cutOutArc.addArc(
withCenter: CGPoint(x: 50.0, y: 250.0),
radius: 50.0,
startAngle: .pi / 2.0,
endAngle: .pi + .pi / 2.0,
clockwise: false
)
cutOutArc.addLine(to: CGPoint(x: 50.0, y: 200.0))
cutOutArc.close()
mainPath.append(cutOutArc)
shapeLayer.fillRule = .evenOdd
shapeLayer.path = mainPath.cgPath
view.layer.insertSublayer(shapeLayer, at: 0)
Код приводит к такой форме (выглядит именно так, как мне нужно):

Что я не могу понять, как это сделать, — это добавить угловой радиус к вырезанной дуге (куда указывают красные стрелки на изображении ниже), скажем, 4,0 балла. Я играл с довольно случайными вариантами уже пару дней, но без какого-либо значимого результата. Я пытался спросить ИИ, и он тоже не смог этого понять (на самом деле он просто продолжал выдавать неработающий код).

Кто-нибудь знает, как сделать это? Любые рекомендации очень ценятся!
Подробнее здесь: https://stackoverflow.com/questions/798 ... bezierpath
Мобильная версия