我正在使用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()
}
}
}
答案 0 :(得分:0)
调用addPath.move(to: CGPoint(x: 100, y: 100))
后,UIBezierPath移动到指定的坐标。现在你告诉它从那里添加一个弧 ,其中心为(100,100)。要绘制具有中心(100,100)的圆弧,首先需要移动到圆周。但此时它已经开始画了!这就是addArc
的工作原理。 addLine
也是如此。看看docs:
此方法从当前点开始添加指定的弧。
因此弧始终从当前点开始,即(100,100)。
不要让它先移动到中心,而是通过移除(到:)行来告诉它绘制弧线。