首页 > 解决方案 > Swift - 格式化 ios 图表 PieEntry 标签以包含显示小时和分钟的自定义标签

问题描述

我有一个pieChart设置为在 24 小时内跟踪用户的时间。

没有事件的饼图截图

我已经对其进行了编程,以获取用户的自定义事件并跟踪其花费的时间长度(以小时和分钟为单位)。

我一直在尝试更改标签 15.50 和 8.50 并将其自定义为显示 15 小时 30 分钟和 8 小时 30 分钟。

我研究了文档,但我无法找到自定义每个条目标签的方法?

包含 1 个事件的饼图示例

标签: ios-charts

解决方案


您需要创建一个自定义 IValueFormatter

public class CustomPieValueFormatter: NSObject, IValueFormatter {
    public func stringForValue(_ value: Double, entry: ChartDataEntry, dataSetIndex: Int, viewPortHandler: ViewPortHandler?) -> String {
        
        let number = modf(value)
        let hour = String(format: "%.0f", number.0)
        let minute = String(format: "%.0f", 60 * number.1)
        return "\(hour) hour \(minute) minute"
    }
}

并将值格式化程序设置为您的 PieChartData

let data = PieChartData(dataSet: dataSet)
        
data.setValueFormatter(CustomPieValueFormatter())

推荐阅读