PieChartView 未以编程方式出现在屏幕上

问题描述 投票:0回答:1

我正在尝试以编程方式显示饼图,但我无法做到这一点。 这是代码。

// 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
        }

我错过了什么?

我尝试添加背景颜色并更改约束,但它不起作用。

ios swift uikit
1个回答
0
投票

您还需要设置图表的宽度和高度。

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]
将无用。您需要自己设置约束。

© www.soinside.com 2019 - 2024. All rights reserved.