#ios-charts
#ios-диаграммы
Вопрос:
Я использую библиотеку диаграмм и пытаюсь воспроизвести этот дизайн:
Я вроде как добираюсь туда, но диаграмма становится слишком маленькой:
Я ожидаю, что диаграмма заполнит всю ширину экрана и будет использовать все вертикальное пространство. Для ясности: RadarChartView — это ширина всей черной области и всего вертикального пространства вплоть до легенды (которая не является частью самого представления диаграммы).
Есть идеи?
Это код ячейки таблицы, который показывает диаграмму:
import Charts
import UIKit
final class ReportSpiderChart: UITableViewCell {
private let labels = ["ARTISTS", "TRACKS", "ALBUMS"]
@IBOutlet private var chartView: RadarChartView!
override func awakeFromNib() {
super.awakeFromNib()
chartView.webLineWidth = 1
chartView.innerWebLineWidth = 1
chartView.webColor = .init(hex: "28282A")
chartView.innerWebColor = .init(hex: "28282A")
chartView.legend.enabled = false
let xAxis = chartView.xAxis
xAxis.labelFont = .systemFont(ofSize: 11, weight: .semibold)
xAxis.xOffset = 0
xAxis.yOffset = 0
xAxis.labelTextColor = .init(hex: "919198")
xAxis.valueFormatter = self
let yAxis = chartView.yAxis
yAxis.labelCount = 3
yAxis.labelFont = .systemFont(ofSize: 11, weight: .semibold)
yAxis.labelTextColor = .init(hex: "919198")
yAxis.axisMinimum = 0
yAxis.drawLabelsEnabled = false
}
func configure(data: ReportData) {
let entries: [RadarChartDataEntry] = [
.init(value: Double(data.artists)),
.init(value: Double(data.tracks)),
.init(value: Double(data.albums)),
]
chartView.yAxis.axisMaximum = Double(max(max(data.artists, data.tracks), data.albums))
let dataSet = RadarChartDataSet(entries: entries)
dataSet.fillColor = UIColor(hex: "FA4B4B").withAlphaComponent(0.75)
dataSet.fillAlpha = 0.75
dataSet.drawFilledEnabled = true
dataSet.lineWidth = 0
dataSet.drawHighlightCircleEnabled = false
dataSet.setDrawHighlightIndicators(false)
let data = RadarChartData(dataSets: [dataSet])
data.setDrawValues(false)
chartView.data = data
}
}
extension ReportSpiderChart: IAxisValueFormatter {
func stringForValue(_ value: Double, axis: AxisBase?) -> String {
return labels[Int(value) % labels.count]
}
}
Комментарии:
1. попробуйте установить ChartView.minOffset = 0
2. Ничего не меняет
Ответ №1:
Кажется, что это свойство spaceTop
and spaceBottom
для оси, вы пытались установить для них значение 0 на обеих осях?
Комментарии:
1. Разницы нет: (
2. Слишком плохо:( Вы пробовали проверять с помощью xcode inspector? Чтобы увидеть, какой вид создает интервал?