ios - 图表 : How to set colors of left and right axis labels in LineChartView?

标签 ios swift linechart ios-charts

我的图表使用自定义 IAxisValueFormatters 设置左右轴标签(如下)。我试过在左轴和右轴(如下)上使用 labelTextColor 属性,但它们没有更改标签的字体颜色。

class myViewController {

    func initalizeGraph() {

        //omitted for brevity

        let leftYAxisValueFormatter = SpeedAndHRLeftYAxisValueFormatter(measurementSystem: measurementSystem)
        lineChartView.leftAxis.labelTextColor = iPhoneThemeColor1
        lineChartView.leftAxis.valueFormatter = leftYAxisValueFormatter

        let rightYAxisValueFormatter = SpeedAndHRRightYAxisValueFormatter()
        lineChartView.rightAxis.labelTextColor = iPhoneThemeColor2
        lineChartView.rightAxis.valueFormatter = rightYAxisValueFormatter
    }
}

class SpeedAndHRLeftYAxisValueFormatter: IAxisValueFormatter {
    //left side is speed

    //multiplu value x 40 (.5 * x = 20?)
    var measurementSystem: MeasurementSystem

    init(measurementSystem: MeasurementSystem) {
        self.measurementSystem = measurementSystem
    }

    func stringForValue(_ value: Double, axis: AxisBase?) -> String {

        let intValue = Int(value * 40)
        var suffixString = ""

        switch measurementSystem {
        case .US:
            suffixString =  "mph"
        case .Metric:
            suffixString = "km/h"
        }

        return "\(intValue)" + " " + suffixString
    }
}

class SpeedAndHRRightYAxisValueFormatter: IAxisValueFormatter {
    //right side is HR

    func stringForValue(_ value: Double, axis: AxisBase?) -> String {

        let intValue = Int(value * 210)

        return "\(intValue)" + " " + "bpm"
    }
}

最佳答案

您必须在 viewDidLoad() 方法中添加以下代码。这在我的一个项目中非常适合我。

override func viewDidLoad() {

    let leftYAxisValueFormatter = SpeedAndHRLeftYAxisValueFormatter(measurementSystem: measurementSystem)
    lineChartView.leftAxis.valueFormatter = leftYAxisValueFormatter
    lineChartView.leftAxis.labelTextColor = iPhoneThemeColor1

    let rightYAxisValueFormatter = SpeedAndHRRightYAxisValueFormatter()
    lineChartView.rightAxis.valueFormatter = rightYAxisValueFormatter
    lineChartView.rightAxis.labelTextColor = iPhoneThemeColor2
}

此外,更新类创建代码如下:

@objc(LineChartFormatter)
class SpeedAndHRRightYAxisValueFormatter:NSObject, IAxisValueFormatter {
    ....
    //Your Code
    ....
}

@objc(LineChartFormatter)
class SpeedAndHRLeftYAxisValueFormatter:NSObject, IAxisValueFormatter {
    ....
    //Your Code
    ....
}

希望对您有所帮助。

Line chart font colour change

关于ios - 图表 : How to set colors of left and right axis labels in LineChartView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54836289/

相关文章:

ios - 如何检测ios数字键盘删除按下

iphone - 手动构建 View 时如何处理 UIViewController 中的 View 初始化顺序?

ios - SwiftUI 导航栏项目中难以点击的按钮

kendo-ui - Telerik 折线图仅显示一个月

javascript - 折线图问题

ios - UICollectionView 刷新数据时间长

ios - 从 xib 加载并将自动调整大小掩码转换为约束

ios - Swift UILabel subview 不更新

ios - i18n 与 Cocoapods 和动态库

python - 使用 matplotlib 为 svg 线图创建工具提示