У меня есть диаграмма пончиков с использованием Shinobi. Но в зависимости от данных метки перекрываются !!Наклейки с надписью Shinobi Donut
Также одна из меток не показали полностью (Max Оплата).
Я искал все переполнение стека и не нашел для этого решения. Также нет ничего об этом на веб-сайте Shinobi или в их документах.
это мой код:
import UIKit
class MyViewController: UIViewController, SChartDatasource {
var donutChartValues:[Double] = []
var donutChartLabels:[String] = []
@IBOutlet weak var chartView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
redrawChart()
}
func redrawChart() {
setDonutChartValues()
let chart = ShinobiChart(frame: chartView.bounds)
chart.autoresizingMask = [.flexibleHeight, .flexibleWidth]
chart.backgroundColor = UIColor.clear
chart.datasource = self
chartView.addSubview(chart)
}
func setDonutChartValues() {
donutChartValues.removeAll()
donutChartLabels.removeAll()
donutChartValues.append(2500.00)
donutChartLabels.append("Max Payment")
donutChartValues.append(300.0)
donutChartLabels.append("Property Tax")
donutChartValues.append(100.0)
donutChartLabels.append("Condo Fees")
donutChartValues.append(150.0)
donutChartLabels.append("Heating Costs")
donutChartValues.append(300.0)
donutChartLabels.append("Debts")
donutChartValues.append(4000.0)
donutChartLabels.append("Other Expenses")
}
/********************************************************************************/
// MARK: - SChartDatasource methods
/********************************************************************************/
func numberOfSeries(in chart: ShinobiChart) -> Int {
return 1
}
func sChart(_ chart: ShinobiChart, seriesAt index: Int) -> SChartSeries {
let donutSeries = SChartDonutSeries()
donutSeries.style().spokeStyle.showSpokes = true;
donutSeries.selectedStyle().spokeStyle.showSpokes = true;
donutSeries.style().labelFontColor = UIColor.black
donutSeries.selectedStyle().labelFontColor = UIColor.black
return donutSeries
}
func sChart(_ chart: ShinobiChart, numberOfDataPointsForSeriesAt seriesIndex: Int) -> Int {
return donutChartValues.count
}
func sChart(_ chart: ShinobiChart, dataPointAt dataIndex: Int, forSeriesAt seriesIndex: Int) -> SChartData {
let dp = SChartDataPoint()
dp.xValue = 0
dp.yValue = (donutChartValues.count > dataIndex) ? donutChartValues[dataIndex] : 0
return dp
}
func sChart(_ chart: ShinobiChart, labelForSliceAt sliceIndex: Int, in series: SChartRadialSeries) -> UILabel? {
let sliceLabel = UILabel()
sliceLabel.text = (donutChartLabels.count > sliceIndex) ? donutChartLabels[sliceIndex] : ""
return sliceLabel
}
}
Любая помощь будет оценена.
Спасибо, но данные будут меняться в программе, я не думаю, что будет простой способ рассчитать, будут ли метки на основе новых данных перекрываться или нет. – Besat