ios swift3 uibezierpath

ios - Ruta de cierre de addArc(withCenter)



swift3 uibezierpath (2)

El siguiente código:

let size = CGSize(width: 200, height: 30) let rect = CGRect(origin: .zero, size: size) let path1 = UIBezierPath() path1.move(to: CGPoint(x: 10, y: 5)) path1.addLine(to: CGPoint(x: 180, y: 5)) path1.addArc(withCenter: CGPoint(x: 180, y: 20), radius: 15, startAngle: (3.14159 / 2), endAngle: (3 * 3.14159 / 2), clockwise: false)

produce esto:

Ok, ¿me estoy perdiendo algo? No quiero cerrar este camino. Nunca llamo a path1.close() . Quiero agregar otra línea recta desde el final del arco, no desde la versión cerrada. Básicamente, no quiero que se cierre el semicírculo, ¿cómo puedo hacer eso?


Debe comenzar su arco a -90 grados y terminarlo a +90 grados. También necesita cambiar su dirección. Debes hacer lo siguiente:

path1.addArc(withCenter: CGPoint(x: 180, y: 20), radius: 15, startAngle: -.pi/2, endAngle: .pi/2, clockwise: true)

Si desea completar la forma, se vería así:

let path1 = UIBezierPath() path1.move(to: CGPoint(x: 10, y: 5)) path1.addLine(to: CGPoint(x: 180, y: 5)) path1.addArc(withCenter: CGPoint(x: 180, y: 20), radius: 15, startAngle: -.pi/2, endAngle: .pi/2, clockwise: true) path1.addLine(to: CGPoint(x: 10, y: 35)) path1.addArc(withCenter: CGPoint(x: 10, y: 20), radius: 15, startAngle: .pi/2, endAngle:-.pi/2 , clockwise: true)


Espero que esto te ayude a lograr tu resultado

let size = CGRect(origin: .zero, size: CGSize(width : 200 , height : 30)) let path = UIBezierPath() path.move(to: CGPoint(x: 10, y: 100)) path.addLine(to: CGPoint(x: 180, y: 100)) path.addArc(withCenter: CGPoint(x:180 , y: 85), radius: 15, startAngle: (3.14159 / 2), endAngle: (3 * 3.14159 / 2), clockwise: false) path.addLine(to: CGPoint(x: 10, y: 70)) //y = radius * 2

El código anterior dibujará esto en su lienzo.