2015-01-27 3 views
0

우리 프로젝트에서는 CorePlot을 사용하여 일부 그래프를 표시하고 CPTXYPlot을 사용하며 일부 분산 플롯을 표시합니다. 이것은 모두 잘되고 우리는 플로팅 라이브러리를 많이 좋아합니다. Eric Skroch와 팀에 큰 감사를드립니다.코어 플롯에서 플롯을 렌더링하는 방법을 결정하는 방법

보기에 많은 것을 표시하고 있으므로 대부분의 작업을 별도의 스레드에서 수행해야했습니다. 이러한 작업이 완료되면 활동 표시기가 표시됩니다. 활동 지표를 숨길 때를 알기 위해서는 우리가 알아야 할 것들 중 하나가 계획이 완료되었는지입니다. 그러나 플롯을 업데이트하기위한 코드 블록이 완료되면 플로팅이 아직 완료되지 않았지만 실행이 완료됩니다. 결과적으로 활동 표시기가 너무 일찍 숨겨집니다.

여기가 우리가하는 일입니다. 플롯 자체는 메인 스레드에서 생성됩니다 (필자는 거기에 생성되어야 함을 읽었습니다).

다른 스레드에서는 그래프에서 모든 플롯을 제거하고 데이터를 다시 계산 한 다음 플롯을 다시 추가합니다. 비슷한 :

Graph.removePlotWithIdentifier(_baselineScatterPlotIdentifier) 
for i in 0..<comparedPlotsData.count { 
    Graph.removePlotWithIdentifier("\(_comparedScatterPlotIdentifierPrefix)\(i)") 
} 

// Data update goes here 

Graph.addPlot(drawBaselineScatterPlot()) 
for i in 0..<comparedPlotsData.count { 
    Graph.addPlot(drawComparedScatterPlot(i)) 
} 

우리의 경우이 코드는 실제로 플롯이 업데이트 된 것을보기 전에 몇 초 만에 완료됩니다. 그리고 스 캐터 플롯의 최대 수가 10보다 적음을 보여주는 단 하나의 해설입니다.

우리가 누락되거나 잘못하고있는 것을 알려주십시오.

답변

1

플롯 대리자를 만들고 -didFinishDrawing: 메서드를 구현합니다. 그리기주기를 완료 한 플롯은 매개 변수로 메소드에 전달되므로 어떤 메소드가 완료되었는지 추적 할 수 있습니다.

+0

완벽하게 작동했습니다! 당신이 한 위대한 일에 대해 대단히 감사 드리며 앞으로도 계속하고 있습니다! –

관련 문제