Я думаю, drawGridLine
не подходит для этого, потому что вы не можете рисовать ниже оси X.
Мне удалось нарисовать тики ниже оси x, переопределив drawLabel
. Эта функция рисует метки ниже оси x и поэтому может рисовать там что-то еще. Например, наши желаемые тики!
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()
}
}
Чтобы использовать пользовательский рендер:
let customXAxisRenderer = XAxisRendererWithTicks(viewPortHandler: self.chartView.viewPortHandler, xAxis: xAxis, transformer: self.chartView.getTransformer(forAxis: .left))
self.chartView.xAxisRenderer = customXAxisRenderer
Пример изображения: Пожалуйста, не обращайте внимания на цвета, но я думаю, вы понимаете, о чем я. ;)
Надеюсь, это поможет!