ios - iOS图表可以围绕除中心以外的不同锚点旋转条形图x轴标签
问题描述
亲爱的,
我想将条形图上的 x 轴标签旋转 45 度。目前可以这样使用:
chartView.xAxis.labelRotationAngle = -45
结果是: 条形图标签
如您所见,旋转锚点正是标签的中心点。
但是我需要将它们围绕它们的最右边的角旋转。因此,它可以防止相互重叠。
解决方案
我们没有简单的方法来更改标签的旋转锚点。但是您可以定义自己的自定义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))
推荐阅读
- python - 如何从分隔字符串中删除值
- android - 我如何知道 Oreo 及以后何时调用“清除最近”?
- rust - SIMD 代码在 Debug 中有效,但在 Release 中无效
- php - Prestashop Guzzle 冲突
- python - 如何创建一对协同程序,要么全部成功,要么全部失败?
- shell - Jenkins shell 不解释 $ 变量
- kubernetes - 如何使用数字海洋的kubernetes并设置自动缩放?
- angular - Angular 6中用于登录屏幕的量角器测试
- html - 覆盖 CSS 删除属性
- java - RxJava2 压缩两个数据源完成时如何做一些操作