在我们的项目中,我们使用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。

您能给我们一个想法吗,我们缺少什么或做错了什么?

最佳答案

创建一个绘图委托并实现-didFinishDrawing:方法。完成绘制循环的绘图将作为参数传递给方法,因此您可以跟踪完成了哪些绘图。

08-19 12:30