在一个上下文中绘制固体和虚线



我想在一个上下文中绘制虚线和一个实线。但是,如果我先画一条虚线,第二行也是虚线。那么如何清理context.setLineDash?我尝试了context.beginContext(),这无济于事。

这是代码:

if let context = UIGraphicsGetCurrentContext() {
    // The first line
    let startPoint = CGPoint(x: 20, y: rect.height/2)
    let endPoint = CGPoint(x: rect.width - 40, y: rect.height/2)
    context.move(to: startPoint)
    context.addLine(to: endPoint)
    context.setLineWidth(1)
    context.setLineDash(phase: 0, lengths: [4, 4])
    context.setStrokeColor(UIColor.progressDashLineColor.cgColor)
    context.strokePath()
    // Second line
    let startPoint1 = CGPoint(x: 20, y: rect.height/2 + 5)
    let endPoint1 = CGPoint(x: rect.width-120, y: rect.height/2)
    context.setStrokeColor(UIColor.mainColor.cgColor)
    context.setLineWidth(5)
    context.move(to: startPoint1)
    context.addLine(to: endPoint1)
    context.setLineCap(.round)
    context.strokePath()
}

在绘制实线之前,将行破折号设置为空数组。

context.setLineDash(phase: 0, lengths: [])

来自CGContext文档:

通过一个空数组清除仪表板图案,以便所有中风 在上下文中绘制使用实线。

文档链接

最新更新