Я пытаюсь нарисовать параллелограмм с закругленными краями. Я хочу, чтобы его можно было настроить, чтобы я мог установить один из вертикальных краев под углом 90 градусов.
Как вы можете видеть на изображении, верхний левый угол не закруглен с кодом ниже
func getParallelogram(width: CGFloat, height: CGFloat, radius: CGFloat) -> CGPath {
// Points of the parallelogram
var points = [
CGPoint(x: width * 0.05, y: 0),
CGPoint(x: width , y: 0),
CGPoint(x: width - width * 0.05, y: height),
CGPoint(x: 0, y: height)
]
let point1 = points[0]
let point2 = points[1]
let point3 = points[2]
let point4 = points[3]
let path = CGMutablePath()
path.move(to: point1)
path.addArc(tangent1End: point1, tangent2End: point2, radius: radius)
path.addArc(tangent1End: point2, tangent2End: point3, radius: radius)
path.addArc(tangent1End: point3, tangent2End: point4, radius: radius)
path.addArc(tangent1End: point4, tangent2End: point1, radius: radius)
return path
}
Применение:
let customView = UIView(frame: CGRect(x: 20, y: 50, width: 320, height: 300))
customView.backgroundColor = UIColor.clear
view.addSubview(customView)
let shape = CAShapeLayer()
shape = UIColor.lightGray.cgColor
shape.path = getParallelogram(width: 200, height: 80, radius: 5)
shape.position = CGPoint(x: 10, y: 10)
shape.layer.addSublayer(triangle)
Проблема, с которой я сталкиваюсь, заключается в том, что верхний левый угол не круглый, когда используется приведенный выше код. Я был бы признателен за любую помощь в достижении этого. Также, пожалуйста, помогите мне, если есть какой-либо другой альтернативный или более простой подход. Спасибо!
Примечание. Я использую этот код для преобразования треугольника в параллелограмм Треугольник UIBezierPath с закругленными краями.
Изменять
path.move(to: point1)
path.addArc(tangent1End: point1, tangent2End: point2, radius: radius)
path.addArc(tangent1End: point2, tangent2End: point3, radius: radius)
path.addArc(tangent1End: point3, tangent2End: point4, radius: radius)
path.addArc(tangent1End: point4, tangent2End: point1, radius: radius)
к
path.move(to: point1)
path.addArc(tangent1End: point2, tangent2End: point3, radius: radius)
path.addArc(tangent1End: point3, tangent2End: point4, radius: radius)
path.addArc(tangent1End: point4, tangent2End: point1, radius: radius)
path.addArc(tangent1End: point1, tangent2End: point2, radius: radius)
Результат:
К сожалению, stackoverlfow не позволяет мне голосовать за вас, потому что я новичок в этой платформе. Извини за это.
Большое спасибо за это (и вопрос, и ответ)
Это идеально. Теперь я знаю, что я делал не так. Спасибо за всю помощь Мэтт