使用 strokeColor,从中心到圆周绘制一条线
With strokeColor, a line is drawn from the center to the circumference
我正在使用 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
调用addPath.move(to: CGPoint(x: 100, y: 100))
后,UIBezierPath移动到指定坐标。现在你告诉它从那里 添加一个圆弧 ,中心为 (100, 100)。以(100, 100)为圆心画圆弧,首先需要向圆周移动。但此时它已经开始绘图了!这就是 addArc
的工作原理。 addLine
也是如此。看看 docs:
This method adds the specified arc beginning at the current point.
所以弧总是从当前点开始,即 (100, 100)。
与其告诉它先移动到中心,不如告诉它通过移除 move(to:)` 线来画一条弧线。
我正在使用 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
调用addPath.move(to: CGPoint(x: 100, y: 100))
后,UIBezierPath移动到指定坐标。现在你告诉它从那里 添加一个圆弧 ,中心为 (100, 100)。以(100, 100)为圆心画圆弧,首先需要向圆周移动。但此时它已经开始绘图了!这就是 addArc
的工作原理。 addLine
也是如此。看看 docs:
This method adds the specified arc beginning at the current point.
所以弧总是从当前点开始,即 (100, 100)。
与其告诉它先移动到中心,不如告诉它通过移除 move(to:)` 线来画一条弧线。