Библиотека iOS-диаграмм замедлена при рендеринге LineChart - PullRequest
0 голосов
/ 08 ноября 2019

Я использую LineChartView для рендеринга около 5000 точек. На моем iPhone 6s для рендеринга графика требуется около 30 с, а масштаб недостаточно.

Есть ли способ оптимизировать рендеринг?

Это мой код инициализации:

_chartView.delegate = self;
_chartView.chartDescription.enabled = NO;
_chartView.dragEnabled = YES;
[_chartView setScaleEnabled:YES];
_chartView.drawGridBackgroundEnabled = YES;
_chartView.gridBackgroundColor = [UIColor blackColor];
_chartView.pinchZoomEnabled = YES;
_chartView.backgroundColor = [UIColor clearColor];

self.xAxis = _chartView.xAxis;
xAxis.labelFont = [UIFont systemFontOfSize:11.f];
xAxis.labelTextColor = UIColor.whiteColor;
xAxis.drawGridLinesEnabled =YES;
xAxis.drawAxisLineEnabled = YES;
xAxis.drawLabelsEnabled = YES;
[xAxis setLabelCount:100];
xAxis.granularity = 50;
xAxis.labelPosition = XAxisLabelPositionBottom;


ChartYAxis *leftAxis = _chartView.leftAxis;
leftAxis.labelTextColor = [UIColor colorWithRed:51/255.f green:181/255.f blue:229/255.f alpha:1.f];
leftAxis.axisMaximum = self.maxValueChart +30;
leftAxis.axisMinimum = self.minValueChart -30;
leftAxis.drawGridLinesEnabled = YES;
leftAxis.drawZeroLineEnabled = NO;
leftAxis.granularityEnabled = YES;
leftAxis.granularity = 20;
//#pragma HACK se ricalcola la granularita dopo non funziona
[self recalculateMaxMinChart];
[leftAxis setDrawLimitLinesBehindDataEnabled:true];
[leftAxis setDrawTopYLabelEntryEnabled:true];

ChartYAxis *rightAxis = _chartView.rightAxis;
rightAxis.labelTextColor = UIColor.redColor;
rightAxis.axisMaximum = 250;
rightAxis.axisMinimum = 0;

rightAxis.drawGridLinesEnabled = YES;
rightAxis.granularityEnabled =YES;
_chartView.drawMarkers = true;
_chartView.data.highlightEnabled = true;

и как мне выделить набор данных

 set1 = [[LineChartDataSet alloc] initWithEntries:yVals1 label:dataSet[@"name"]];
    set1.axisDependency = AxisDependencyLeft;
    [set1 setColor: color];
    [set1 setCircleColor:UIColor.whiteColor];
    set1.lineWidth = 2.0;
    set1.circleRadius = 3.0;
    set1.fillAlpha = 65/255.0;
    set1.fillColor = [UIColor colorWithRed:51/255.f green:181/255.f blue:229/255.f alpha:1.f];
    set1.highlightColor = [UIColor colorWithRed:244/255.f green:117/255.f blue:117/255.f alpha:1.f];
    set1.drawCircleHoleEnabled = NO;
    set1.mode = LineChartModeLinear;
    set1.drawCirclesEnabled = NO;
    set1.drawValuesEnabled = NO;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...