2015-09-07 5 views
0

Я использую ios-chart, чтобы представить календарь, который я построил. В настоящее время я использую LineChart для построения моих данных, и я набираю 1 балл за каждый день года на одной диаграмме. Таким образом, у меня 365 баллов, построенных на одном графике. И это занимает 1 секунду, чтобы нарисовать его. Это не большая проблема, за исключением того, что у меня есть мой календарь как TableViewCell, что приведет к очень хакерскому прокрутку, когда TableViewCell прокручивается за пределами ContentView, а затем снова прокручивается (так что ячейка перерисовывается). Чувствуется странно, что так много времени занимает около 400 очков, даже на iPhone 6. Возможно, я что-то делаю неправильно?iOS-диаграммы замедляют мое приложение

Мой код установки для диаграммы:

lineChart.descriptionText = "" 
     lineChart.drawGridBackgroundEnabled = false 
     lineChart.userInteractionEnabled = false 
     lineChart.xAxis.drawAxisLineEnabled = false 
     lineChart.xAxis.drawGridLinesEnabled = false 
     lineChart.xAxis.drawLabelsEnabled = false 
     lineChart.drawBordersEnabled = false 
     lineChart.leftAxis.enabled = false 
     lineChart.rightAxis.enabled = false 
     lineChart.legend.enabled = false 
     lineChart.contentMode = .ScaleAspectFill 

     var xVals = [String]() 
     var dataSet = LineChartDataSet(yVals: [ChartDataEntry]()) 
     for (index, value) in enumerate(plotData){ 
      dataSet.addEntry(ChartDataEntry(value: Float(value), xIndex: index)) 
      xVals.append("\(index)") 
     } 

     dataSet.setColor(Colors.whiteColor()) 
     dataSet.lineWidth = 1.0 
     dataSet.circleRadius = 0.0 
     dataSet.drawCirclesEnabled = false 
     dataSet.drawValuesEnabled = false 
     dataSet.drawFilledEnabled = true 
     dataSet.fillColor = Colors.whiteColor() 
     dataSet.fillAlpha = 0.1 
     dataSet.valueTextColor = Colors.whiteColor() 

     lineChart.data = LineChartData(xVals: xVals, dataSet: dataSet) 

Код выше выполняется каждый раз, когда создается ячейка (или повторно). Есть идеи?

+0

Вы пробовали [Профиль времени] (https://developer.apple.com/library/ios/documentation/AnalysisTools/Reference/Instruments_User_Reference/TimeProfilerInstrument/TimeProfilerInstrument.html) в [Инструменты] (https: // разработчик .apple.com/библиотека/ИОС/документация/Разработчик/Концептуальный/InstrumentsUserGuide/Введение/Introduction.html)? – Mats

+0

@ Маты никогда не использовали это раньше. Спасибо, нашел узкое место :)! Не имеет ничего общего с ios-chart. – ClockWise

ответ

0

Проблема была в данных, которые устанавливались каждый раз при повторном использовании ячейки. Очевидно, что создание данных должно быть не в ячейке, а в другом месте. Должно быть решено, как только я переведу свое инициирование данных в другое место.

+0

очевидно истинно согласно MVC – Injectios

Смежные вопросы