ios-диаграммы как настроить высоту круговой диаграммы - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь правильно подогнать круговую диаграмму к виду, который намного выше, чем диаграмма.Проблема в том, что я хотел бы включить вертикальный список легенд внизу графика, и это делает высоту реального графика динамической.Если у меня слишком много записей в наборе данных, еще одна строка легенды внизу диаграммы не отображается.

Есть ли практический способ получить "фактическую" или "визуализированную" высоту диаграммы, чтобыЯ могу установить pieChart.frame.height на это значение?Или иначе, как я могу настроить высоту диаграммы так, чтобы она включала все, включая легенду?

enter image description here

@IBOutlet weak var pieChart: PieChartView!

var aDataEntry = PieChartDataEntry(value:30)
var bDataEntry = PieChartDataEntry(value:25)

var dataEntries = [PieChartDataEntry]()



override func viewDidLoad() {
    super.viewDidLoad()

    pieChart.chartDescription?.text = "A test"
    aDataEntry.label = "A"
    bDataEntry.label = "B"

    dataEntries = [aDataEntry, bDataEntry]

    updateChartData()

    // Do any additional setup after loading the view.
}

func updateChartData() {
    let chartDataSet = PieChartDataSet(values: dataEntries, label:nil)
    let chartData = PieChartData(dataSet: chartDataSet)
    var colours:[UIColor] = []
    for i in 1..<10 {
        colours.append(UIColor(named: "Colour" + String(i))!)
    }
    chartDataSet.colors = colours 
    pieChart.data = chartData
    pieChart.usePercentValuesEnabled = true
    pieChart.legend.orientation = .vertical
    pieChart.notifyDataSetChanged()
    print(pieChart.frame.height)
}

1 Ответ

0 голосов
/ 29 октября 2018

После добавления / настройки легенд, вам просто нужно позвонить pieChartView.notifyDataSetChanged(), иначе ваши легенды исчезнут из поля зрения.Вот пример:

pieChartView.legend.verticalAlignment = .bottom
pieChartView.legend.horizontalAlignment = .center
pieChartView.legend.orientation    = .vertical
pieChartView.notifyDataSetChanged()

Редактировать 1: для быстрого решения вашей проблемы используйте пустую строку вместо nil при вызове PieChartDataSet .

let chartDataSet = PieChartDataSet(values: dataEntries, label:"")
...