首页 > 解决方案 > iOS图表可以围绕除中心以外的不同锚点旋转条形图x轴标签

问题描述

亲爱的,

我想将条形图上的 x 轴标签旋转 45 度。目前可以这样使用:

chartView.xAxis.labelRotationAngle = -45

结果是: 条形图标签

如您所见,旋转锚点正是标签的中心点。

但是我需要将它们围绕它们的最右边的角旋转。因此,它可以防止相互重叠。

标签: iosswiftios-charts

解决方案


我们没有简单的方法来更改标签的旋转锚点。但是您可以定义自己的自定义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))

推荐阅读