我正在尝试以编程方式显示饼图,但我无法做到这一点。 这是代码。
// Create pie chart view
let pieChart: PieChartView = {
let pieChart = PieChartView()
pieChart.translatesAutoresizingMaskIntoConstraints = false
pieChart.autoresizingMask = [.flexibleWidth, .flexibleHeight]
return pieChart
}()
setPieChartData(chartView: pieChart, labels: labels, values: values)
setupViews() // Here I am adding the piechart view as follows
view.addSubview(pieChart)
NSLayoutConstraint.activate([pieChart.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 180),
pieChart.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20)])
pieChart.setNeedsDisplay()
func setPieChartData(chartView: PieChartView, labels: [String], values: [Double]) {
var entries: [PieChartDataEntry] = []
for i in 0..<labels.count {
entries.append(PieChartDataEntry(value: values[i], label: labels[i]))
}
let dataSet = PieChartDataSet(entries: entries, label: "Pie Chart")
dataSet.colors = [.orange, .red]
// dataSet.drawValuesEnabled = true // Hide values on chart
//
// // Set additional properties for donut chart
// dataSet.drawIconsEnabled = true
// dataSet.drawValuesEnabled = true
// dataSet.sliceSpace = 2.0 // Adjust space between slices to create donut effect
let data = PieChartData(dataSet: dataSet)
chartView.data = data
}
我错过了什么?
我尝试添加背景颜色并更改约束,但它不起作用。
您还需要设置图表的宽度和高度。
view.addSubview(pieChart)
NSLayoutConstraint.activate([
pieChart.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 180),
pieChart.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
pieChart.widthAnchor.constraint(equalTo: view.widthAnchor),
pieChart.heightAnchor.constraint(equalTo: view.heightAnchor),
])
pieChart.setNeedsDisplay()
当您设置
pieChart.translatesAutoresizingMaskIntoConstraints = false
时,pieChart.autoresizingMask = [.flexibleWidth, .flexibleHeight]
将无用。您需要自己设置约束。