Диаграммы: Как установить цвета меток левой и правой оси в LineChartView? - PullRequest
0 голосов
/ 23 февраля 2019

Мой график использует пользовательские 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"
    }
}

1 Ответ

0 голосов
/ 23 февраля 2019

Вы должны добавить следующий код в методе 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

...