在我们的项目中,我们使用 CorePlot 来显示一些图形,他们使用 CPTXYPlot,而我们正在显示一些散点图。这一切都很好,我们实际上非常喜欢绘图库。非常感谢 Eric Skroch 和团队所做的出色工作!
由于我们在 View 上显示了很多东西,我们不得不将大部分工作推到一个单独的线程上。当这些事情完成时,我们会显示一个事件指示器。为了知道何时隐藏事件指示器,我们需要知道的一件事是绘图是否已完成。但是,当我们用于更新绘图的代码块完成时,绘图仍未完成,但执行完成。因此,我们的事件指示器会过早隐藏。
这就是我们正在做的事情。情节本身是在主线程上创建的(我读到它必须在那里创建)。
在另一个线程上,我们从图中删除所有图,重新计算数据,然后再次添加图。像这样的东西:
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。
能否请您告诉我们我们缺少什么或我们做错了什么?
最佳答案
创建一个绘图委托(delegate)并实现 -didFinishDrawing:
方法。完成绘制周期的绘图作为参数传递给该方法,因此您可以跟踪哪些已完成。
关于ios - 如何判断Plot已经被Core-Plot渲染过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28178212/