我正在使用核心图(0.4)来渲染图表,它运行正常。但是(特别是在iPad上)图形可能需要一段时间才能渲染。我已经在图形中添加了一个UIActivityIndicatorView,它会在图形开始绘制时显示,但我找不到任何可以用来阻止微调器的事件。
我已经尝试使用numberForPlot方法并检测何时请求了最后一个数据点,但是对于scatterGraph上的每一行,这被多次调用,所以我不能轻易使用它。是否有任何类型的图形渲染事件我可以为此挂钩?
答案 0 :(得分:0)
如果您正在[graph reloadData]
更新图表,您是否可以使用指标启动/停止呼叫来支持该呼叫?我认为核心情节在主线程中做了所有事情。
答案 1 :(得分:0)
Core Plot使用Core Animation进行所有渲染。单个图包含许多独立呈现的CA层。 -reloadData
只是告诉图表下次绘制时更新其数据缓存并告诉Core Animation它需要重绘。同样,仅包围数据源调用仅捕获渲染之前发生的数据缓存。您会错过实际的绘图时间,并且永远不会知道Core Animation是否会在其他时间重新渲染图形,例如在调整大小之后。
如果您只关心渲染绘图的时间而不关心图的其他部分,那么执行此操作的一种方法是继承CPTScatterPlot
并覆盖-renderAsVectorInContext:
方法。使用您的活动指示码代码调用super
的来电。