iOS DGCharts 柱狀圖BarChart虛線

/// 背后繪制虛線的 XAxisRenderer

final class BackLineXAxisRenderer: XAxisRenderer {

? ? /// 虛線繪制的 x 值(數(shù)據(jù)坐標系)

? ? 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) {

? ? ? ? // 先讓系統(tǒng)畫原有的 grid line

? ? ? ? super.renderGridLines(context: context)

? ? ? ? guard

? ? ? ? ? ? letdashedX,

? ? ? ? ? ? lettransformer

? ? ? ? else{return}

? ? ? ? // 數(shù)據(jù)坐標 -> 像素坐標

? ? ? ? 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()

? ? }

}

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容