gpt4 book ai didi

swift - 允许 PieChartView 在 Swift 中隐藏小切片的标签

转载 作者:搜寻专家 更新时间:2023-11-01 07:06:50 25 4
gpt4 key购买 nike

我正在使用图表 iOS 框架制作图表。但当切片很小时,该值将覆盖。我怎样才能隐藏它?这个问题类似于这个GitHub link ,但我不明白它是如何工作的。我是否只需要在我的 View Controller 中添加代码或将 PieChartRenderer.swift 文件拖到我的项目中?

有人可以向我解释如何使用拉取请求或一些开放的公共(public)功能......

抱歉,我是 iOS 框架的新手。

enter image description here

这是我的代码。

@IBOutlet weak var myChart: PieChartView!

var valueColors = [UIColor]()
var dataEntries = [PieChartDataEntry]()
var record = [Record]()
var category = [String]()
var categoryTotal : [Double] = []
var categoryArray : [String] = []

func setDataCount() {
valueAndColor()

let set = PieChartDataSet(values: dataEntries, label: nil)

set.colors = valueColors
set.valueLinePart1OffsetPercentage = 0.8
set.valueLinePart1Length = 0.2
set.valueLinePart2Length = 0.4
set.xValuePosition = .outsideSlice
set.yValuePosition = .outsideSlice
set.selectionShift = 0.0

let data = PieChartData(dataSet: set)
let Formatter:ChartFormatter = ChartFormatter()
data.setValueFormatter(Formatter)
data.setValueFont(.systemFont(ofSize: 11, weight: .light))
data.setValueTextColor(.black)

myChart.data = data
myChart.highlightValues(nil)
}

func setup(pieChartView chartView: PieChartView) {
chartView.usePercentValuesEnabled = true
chartView.drawSlicesUnderHoleEnabled = true
chartView.holeRadiusPercent = 0.58
chartView.chartDescription?.enabled = false
chartView.drawCenterTextEnabled = true
chartView.centerAttributedText = attributedString;
chartView.drawHoleEnabled = true
chartView.rotationAngle = 0
chartView.rotationEnabled = true
chartView.highlightPerTapEnabled = true
}

func valueAndColor(){
for i in 0..<categoryArray.count{
let dataEntry = PieChartDataEntry(value: categoryTotal[i], label: categoryArray[i % categoryArray.count])
dataEntries.append(dataEntry)

if categoryArray[i] == "吃喝" {
valueColors.append(UIColor.yellow)
}else if categoryArray[i] == "交通"{
valueColors.append(UIColor.red)
}...
}

最佳答案

创建一个自定义格式化程序,我将 minNumber 设置为 10.0,当值小于 minNumber 时返回空字符串,否则返回值。

public class ChartFormatter: NSObject, IValueFormatter{

public func stringForValue(_ value: Double, entry: ChartDataEntry, dataSetIndex: Int, viewPortHandler: ViewPortHandler?) -> String {

let total = UserDefaults.standard.double(forKey: "totalValue")

var valueToUse = value/total * 100
valueToUse = Double(round(10*valueToUse)/10)
print("valueToUse: \(valueToUse)")
let minNumber = 10.0

if(valueToUse<minNumber) {
return ""
}
else {
return String(valueToUse) + "%"
}
}

}

然后确保设置 totalValue 变量,将其存储在 UserDefaults 中(以便可以在格式化程序中访问它)并为图表设置格式化程序

    var totalValue = 0.0

let units = [10.0, 4.0, 6.0, 3.0, 12.0, 16.0]
for a in units {
totalValue += a
}
UserDefaults.standard.set(totalValue, forKey: "totalValue")

let formatter:ChartFormatter = ChartFormatter()

data.setValueFormatter(formatter)

结果:

Result

关于swift - 允许 PieChartView 在 Swift 中隐藏小切片的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47470920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com