我在
CAShapeLayer
上添加了一个圆圈,并在 UIBeizerPath
上添加了一条线。我想保持线的位置在圆之上。基本上在drawRect
中,物品的位置会一个接一个的保持。所以,我先调用 drawCircle()
并调用 drawLine()
期望线必须在圆的顶部。这是我的代码。
class DrawView: UIView {
override func draw(_ rect: CGRect) {
drawCircle()
drawLine()
}
private func drawCircle() {
if let sublayers = layer.sublayers {
for layer in sublayers where layer.name == "Circle" {
layer.removeFromSuperlayer()
}
}
let circlePath = UIBezierPath(arcCenter: CGPoint(x: bounds.midX, y: 400),
radius: 20.0,
startAngle: 0,
endAngle: CGFloat(Double.pi * 2),
clockwise: true)
let shapeLayer = CAShapeLayer()
shapeLayer.name = "Circle"
shapeLayer.path = circlePath.cgPath
shapeLayer.fillColor = UIColor.clear.cgColor
shapeLayer.strokeColor = UIColor.red.cgColor
shapeLayer.lineWidth = 3.0
layer.addSublayer(shapeLayer)
}
private func drawLine() {
let path = UIBezierPath()
path.move(to: CGPoint(x:bounds.midX, y:0))
path.addLine(to: CGPoint(x: bounds.midX, y: 400))
path.close()
UIColor.blue.set()
path.lineWidth = 20.0
path.stroke()
}
}
下面是结果
但是,将线添加到另一个
CAShapeLayer
给出了预期的结果,将线添加到圆的顶部。如何在不将线添加到CAShapeLayer
.的情况下将线放在圆的顶部