简体   繁体   English

lineChartView 轴 label 在 label 上添加额外的线

[英]lineChartView axis label add extra line on the label

hi i want to add a line on top of every label like this嗨,我想像这样在每个 label 上添加一行

在此处输入图像描述

i tried我试过了

class XAxisRendererWithTicks: XAxisRenderer {

override func drawLabel(context: CGContext, formattedLabel: String, x: CGFloat, y: CGFloat, attributes: [NSAttributedString.Key: Any], constrainedToSize: CGSize, anchor: CGPoint, angleRadians: CGFloat) {

super.drawLabel(context: context, formattedLabel: formattedLabel, x: x, y: y, attributes: attributes, constrainedToSize: constrainedToSize, anchor: anchor, angleRadians: angleRadians)

context.beginPath()

context.move(to: CGPoint(x: x, y: y))
context.addLine(to: CGPoint(x: x, y: self.viewPortHandler.contentBottom))

context.strokePath()
}}

and

let customXAxisRenderer = XAxisRendererWithTicks(viewPortHandler: lineChartView.viewPortHandler, xAxis: lineChartView.xAxis, transformer: lineChartView.getTransformer(forAxis: .left))
    lineChartView.xAxisRenderer = customXAxisRenderer
    

this can make the short line, but how to remove the short line where is no label?这可以做短线,但是如何去除没有label的短线呢?

在此处输入图像描述

thanks谢谢

i solved my problem by this我通过这个解决了我的问题

override func drawLabel(context: CGContext, formattedLabel: String, x: CGFloat, y: CGFloat, attributes: [NSAttributedString.Key: Any], constrainedToSize: CGSize, anchor: CGPoint, angleRadians: CGFloat) {

    super.drawLabel(context: context, formattedLabel: formattedLabel, x: x, y: y, attributes: attributes, constrainedToSize: constrainedToSize, anchor: anchor, angleRadians: angleRadians)

    if(formattedLabel == ""){
        return
    }
    context.beginPath()

    context.move(to: CGPoint(x: x, y: y))
    context.addLine(to: CGPoint(x: x, y: self.viewPortHandler.contentBottom))

    context.strokePath()
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM