Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 向UIBezierPath addArc函数添加箭头端点_Swift_Core Graphics_Uibezierpath - Fatal编程技术网

Swift 向UIBezierPath addArc函数添加箭头端点

Swift 向UIBezierPath addArc函数添加箭头端点,swift,core-graphics,uibezierpath,Swift,Core Graphics,Uibezierpath,我试图在UIBezierPath圆弧的末端实现以下结果: 我已经找到了一个类似的答案,但它没有使用addArc功能,因此我无法设置开始和结束角度,并且写在obj-c上 extension UIBezierPath { func addArrow(start: CGPoint, end: CGPoint, pointerLineLength: CGFloat, arrowAngle: CGFloat) { self.move(to: start) self

我试图在UIBezierPath圆弧的末端实现以下结果:

我已经找到了一个类似的答案,但它没有使用addArc功能,因此我无法设置开始和结束角度,并且写在obj-c上

extension UIBezierPath {
    func addArrow(start: CGPoint, end: CGPoint, pointerLineLength: CGFloat, arrowAngle: CGFloat) {
        self.move(to: start)
        self.addLine(to: end)

        let startEndAngle = atan((end.y - start.y) / (end.x - start.x)) + ((end.x - start.x) < 0 ? CGFloat(Double.pi) : 0)
        let arrowLine1 = CGPoint(x: end.x + pointerLineLength * cos(CGFloat(Double.pi) - startEndAngle + arrowAngle), y: end.y - pointerLineLength * sin(CGFloat(Double.pi) - startEndAngle + arrowAngle))
        let arrowLine2 = CGPoint(x: end.x + pointerLineLength * cos(CGFloat(Double.pi) - startEndAngle - arrowAngle), y: end.y - pointerLineLength * sin(CGFloat(Double.pi) - startEndAngle - arrowAngle))

        self.addLine(to: arrowLine1)
        self.move(to: end)
        self.addLine(to: arrowLine2)
    }
    
}
    path.addArc(withCenter: center, radius: radius,
                startAngle: angle1Inradians, endAngle: angle2Inradians,
                    clockwise: false)

    let pathCurrentPoint = path.currentPoint
    let x = center.x + radius * cos(angle1Inradians)
    let y = center.y - radius * sin(angle2Inradians)
    let point = CGPoint(x: x , y: y )
    path.addArrow(start: pathCurrentPoint, end: point, pointerLineLength: 10, arrowAngle: CGFloat(Double.pi / 4))

    let layer = CAShapeLayer()
    layer.fillColor = UIColor.clear.cgColor
    layer.lineWidth = 2
    layer.strokeColor = UIColor.orange.cgColor
    layer.path = path.cgPath
    self.layer.addSublayer(layer)