使用strokeColor,从中心到圆周绘制一条线

时间:2018-05-06 07:20:38

标签: ios swift xcode uibezierpath cashapelayer



我正在使用swift 4.
我在下面编写了代码并尝试用笔画画一个圆圈 但是,根据下面的代码,我无法画出我想要的圆圈 问题是线从圆的中心到外周边(严格来说,朝'startAngle'属性的坐标点)。

我想删除这条线,我该怎么办?

(我准备了一张图片。)

class Something{

    var line:[CAShapeLayer] = []
    var path:[UIBezierPath] = []

    func drawingNow(){
            let layer = CAShapeLayer()
            self.layer.addSublayer(layer)
            self.line.append(layer)

            let addPath: UIBezierPath = UIBezierPath()
            addPath.move(to: CGPoint(x: 100, y: 100))
            addPath.addArc(
                withCenter: CGPoint(x: 100, y: 100),
                radius: CGFloat(50),
                startAngle: CGFloat(//someangle),
                endAngle: CGFloat(//someangle),
                clockwise: true
            )

            self.path.append(addPath)

            //self.line.last!.strokeColor = etc... (If don't use "override func draw()")
            self.line.last!.fillColor = UIColor.clear.cgColor
            self.line.last!.path = addPath.cgPath

            self.setNeedsDisplay()
    }

    override func draw(_ rect: CGRect) {
        if self.path.count != 0{
            UIColor.orange.setStroke()
            self.path.last!.stroke()
        }
    }
}

Image

1 个答案:

答案 0 :(得分:0)

调用addPath.move(to: CGPoint(x: 100, y: 100))后,UIBezierPath移动到指定的坐标。现在你告诉它从那里添加一个弧 ,其中心为(100,100)。要绘制具有中心(100,100)的圆弧,首先需要移动到圆周。但此时它已经开始画了!这就是addArc的工作原理。 addLine也是如此。看看docs

  

此方法从当前点开始添加指定的弧。

因此弧始终从当前点开始,即(100,100)。

不要让它先移动到中心,而是通过移除(到:)行来告诉它绘制弧线。