iOS DGCharts 柱状图BarChart虚线
/// 背后绘制虚线的 XAxisRenderer
final class BackLineXAxisRenderer: XAxisRenderer {
/// 虚线绘制的 x 值(数据坐标系)
vardashedX:Double?
/// 起点 Y 偏移(像素)
var startYOffset: CGFloat = -30
///虚线颜色
vardashColor:UIColor= .lightGray
///虚线宽度
var dashLineWidth: CGFloat = 1.5
/// 虚线样式(等价 Android 的[10f, 10f])
vardashPattern: [CGFloat] = [3,3]
//MARK: - Init
override init(
viewPortHandler: ViewPortHandler,
axis:XAxis,
transformer:Transformer?
) {
super.init(
viewPortHandler: viewPortHandler,
axis: axis,
transformer: transformer
)
}
//MARK: - Render
override func renderGridLines(context: CGContext) {
// 先让系统画原有的 grid line
super.renderGridLines(context: context)
guard
letdashedX,
lettransformer
else{return}
// 数据坐标 -> 像素坐标
varposition =CGPoint(x: dashedX,y:0)
transformer.pointValueToPixel(&position)
context.saveGState()
defer{ context.restoreGState() }
context.setStrokeColor(dashColor.cgColor)
context.setLineWidth(dashLineWidth)
context.setLineDash(phase:0,lengths:dashPattern)
let top = viewPortHandler.contentTop + startYOffset
let bottom = viewPortHandler.contentBottom
context.move(to:CGPoint(x: position.x,y: top))
context.addLine(to:CGPoint(x: position.x,y: bottom))
context.strokePath()
}
}