如何判断Plot已经被Core-Plot渲染过

How to determine that the Plot has been rendered by Core-Plot

在我们的项目中,我们使用 CorePlot 来显示一些图形,他们使用 CPTXYPlot,而我们正在显示一些散点图。这一切都很好,我们实际上非常喜欢绘图库。非常感谢 Eric Skroch 和团队所做的出色工作!

由于我们在视图上显示了很多东西,所以我们不得不将大部分工作推到一个单独的线程上。当这些事情完成时,我们会显示一个 activity 指示器。为了知道何时隐藏 activity 指标,我们需要知道的一件事是绘图是否已完成。但是,当我们用于更新绘图的代码块完成时,绘图仍未完成,但执行完成。结果,我们的 activity 指标被过早隐藏了。

这就是我们正在做的事情。情节本身是在主线程上创建的(我读到它必须在那里创建)。

在另一个线程中,我们正在从图中删除所有绘图,重新计算数据,然后再次添加绘图。类似于:

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: 方法。完成绘制周期的图作为参数传递给方法,因此您可以跟踪哪些已完成。