iOS Charts возможность вращать метку оси X гистограммы вокруг другой точки привязки, кроме ее центра - PullRequest
0 голосов
/ 24 сентября 2018

Уважаемые,

Я хочу добиться поворота метки оси X на гистограмме на 45 градусов.В настоящее время это возможно, используя вот так:

chartView.xAxis.labelRotationAngle = -45

И результат: Метки гистограммы

Как видите, вращающаяся опорная точка - это точно центральные точки

Но мне нужно повернуть их вокруг их правого угла.Таким образом, это предотвращает наложение друг на друга.

1 Ответ

0 голосов
/ 24 сентября 2018

У нас нет простого способа изменить вращающуюся точку привязки этикеток.Но вы можете определить свой собственный класс XAxisRenderer и переопределить функцию renderAxisLabels.Я сделал простой пример и надеюсь, что это поможет вам двигаться в правильном направлении.Я удалил весь ненужный код из функции renderAxisLabels и изменил опорную точку с (x: 0.5, y: 0.0) на (x: 0.8, y: 0.0)

Определение пользовательского средства визуализации

class MyXAxisRenderer: XAxisRenderer {
    override func renderAxisLabels(context: CGContext)
    {
        guard let xAxis = self.axis as? XAxis else { return }

        if !xAxis.isEnabled || !xAxis.isDrawLabelsEnabled
        {
            return
        }

        let yOffset = xAxis.yOffset

        guard xAxis.labelPosition == .bottom else { return  }

        let customAnchorPoint = CGPoint(x: 0.8, y: 0.0)  // custom anchor point, default value is (x: 0.5, y: 0.0)

        drawLabels(context: context, pos: viewPortHandler.contentBottom + yOffset, anchor: customAnchorPoint)
    }
}

и используйте его.

chartView.xAxis.labelRotationAngle = -45
chartView.xAxis.labelPosition = .bottom      
chartView.xAxisRenderer = MyXAxisRenderer(viewPortHandler: chartView.viewPortHandler, xAxis: chartView.xAxis, transformer: chartView.getTransformer(forAxis: .left))
...