You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中调用dash_line后continuous_Line绘制实线变虚线的问题问询

解决Swift中虚线绘制影响后续实线的问题

问题出在CGContext的绘图状态是全局共享的——你在dash_line函数中设置了虚线样式后,没有重置这个状态,导致后续所有绘图操作都会继承这个虚线配置。

只需要在修改绘图状态前保存当前Context的状态,绘制完成后恢复即可,具体修改如下:

// 保存当前Context的所有绘图状态
context_dash.saveGState()

context_dash.setStrokeColor(color!.cgColor)
context_dash.setLineWidth(strokeWidth)

let dashArray:[CGFloat] = [d1,d2,d3,d4]
context_dash.setLineDash(phase: strokeWidth, lengths: dashArray)
context_dash.move(to: CGPoint(x: p1.x, y: p1.y))
context_dash.addLine(to: CGPoint(x: p2.x, y: p2.y))

context_dash.drawPath(using: CGPathDrawingMode.stroke)

// 恢复到保存时的Context状态,清除自定义的虚线配置
context_dash.restoreGState()

saveGState()会把当前Context的所有绘图参数(包括线条样式、颜色、宽度等)暂存起来,restoreGState()则会将Context恢复到保存时的初始状态,这样后续调用continuous_Line时,就会使用默认的实线样式,不会被之前的虚线设置干扰。

内容的提问来源于stack exchange,提问作者Xin Lok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 09:22:03