假设你有一个 UIView:
override func draw(_ rect: CGRect) {
let c = UIGraphicsGetCurrentContext()
c?.setLineWidth(10.0)
c?.move(to: CGPoint(x: 10.0, y: 10.0))
c?.addLine(to: CGPoint(x: 40.0, y: 40.0))
... lots of complicated drawing here, sundry paths, colors, widths etc ...
c?.strokePath()
}
当然,它会自动绘制你的绘图。
但是,在同一个UIView中,如果你这样做...
func setup() { // in inits, layout
if nil etc {
thingLayer = CAShapeLayer()
self.layer.insertSublayer(thingLayer, at: 0)
thingLayer.fillColor = UIColor.yellow.cgColor }
thingLayer.frame = bounds
let path = ... some fancy path
thingLayer.path = path.cgPath
}
确实,在draw#rect中,新的黄色层是在原图上叠加绘制的。
如何使用核心图形命令在thingLayer上绘制,或者可能在所有图层的顶部另外创建一个图层进行绘制?
核心图形命令:
let c = UIGraphicsGetCurrentContext()
c?.setLineWidth(10.0)
c?.move(to: CGPoint(x: 10.0, y: 10.0))
c?.addLine(to: CGPoint(x: 40.0, y: 40.0))
c?.strokePath()
似乎可以直接绘制到主要.layer
的上方或上面。
(据我所见,情况似乎是这样。)
您如何使用核心图形命令进行绘制 - 要么在thingLayer上,要么在另一个位于所有图层顶部的图层上?
显然,在draw#rect中,您可以指定要绘制到哪个cgLayer中?
在draw#rect中,您能否创建另一个cgLayer并绘制到上下文中,该cgLayer如何处理?