【问题标题】:CorePlot: how to i know that the Graphic finish draw? anything like ViewDidLoad method?CorePlot:我怎么知道图形完成绘制?像 ViewDidLoad 方法一样吗?
【发布时间】:2012-02-17 07:04:41
【问题描述】:

CorePlot:我怎么知道图形完成绘制?有什么类似于 ViewDidLoad 方法的吗?

因为我在加载内容时在前面有一个加载视图。

我正在使用 CorePlot 示例代码中的 AAPLOT。

我以为下面的函数是告诉我它完成了图形,但事实并非如此。

-(void)dataPullerDidFinishFetch:(APYahooDataPuller *)dp;

有没有像 ViewDidLoad 这样的函数可以让我知道它何时成功完成绘图??

谢谢

【问题讨论】:

    标签: iphone charts core-plot


    【解决方案1】:

    Core Animation 负责 Core Plot 中的所有绘图。一个完整的 Core Plot 图有很多层;每一张都是独立绘制的。没有定义绘制顺序,Core Animation 也没有在绘制完成时提供任何回调。

    您可以放置​​加载视图,直到您的数据源被查询到所有数据。如果加载数据需要很长时间,则不应阻止 Core Plot 等待它进入。在内部缓存数据并在准备好时在图表(或单个图表)上调用 -reloadData。只需在等待数据进入时显示加载视图。告诉 Core Plot 加载它后,移除加载视图。

    【讨论】:

      【解决方案2】:

      为了构建此功能,我在numberForPlot:field:recordIndex: 的实现中添加了一些代码,以检查记录索引是否等于“我的源数据中的记录数减一”(因为绘图数据源使用零- 基于编号)。

      因为 CorePlot 会按顺序呈现条形图上的条形,所以我可以确信,当条形编号等于我的数据源中的记录数减一时,它位于最后一条记录上(这可能是如果您在图表中绘制多个图,则情况会更加微妙)。

      此时,我只是在numberForPlot:field:recordIndex: 方法中创建了一个名为finishedDrawingGraph 的iOS 通知:

      // If this is the last bar in the chart for this layer, send notification to
      // say that the graph has finished drawing
      if (index == [self.dataController.builds count]-1
      {
          [[NSNotificationCenter defaultCenter] postNotificationName:@"finishedDrawingGraph" object:nil];
      }
      

      我的视图控制器中有一个监听器来监听finishedDrawingGraph 事件。由于通知系统相对较慢(与直接调用方法相比),因此在收到此通知时,图形几乎肯定已经绘制完毕。为了增加确定性,我可以在收到通知后等待一段时间。

      - (void)eventHandler: (NSNotification *) notification
      {
          if ([notification.name isEqualToString:@"finishedDrawingGraph"])
          {
              NSLog2 (@"Graph drawn.");
      
              // Do something with your graph. 
              // For example, create an image of the graph
              UIImage *graphImage = [graph imageOfLayer];
          }
      }
      

      这不是一个特别优雅的解决方案,在某些情况下它可能会中断(系统负载非常重,更新到 CorePlot),但它足以满足我当前的需求。

      【讨论】:

      • 非常感谢,我等这个解决方案好久了,我希望它有效,我现在正在尝试,谢谢!!!!
      • 不客气。我希望它对你有帮助。如果您希望我发布更多代码,请告诉我。
      • 嗨,你能看看我关于如何在 iphone sdk 中进行 2 个套接字连接的另一个问题吗?谢谢stackoverflow.com/questions/8264484/…
      猜你喜欢
      • 1970-01-01
      • 2016-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-31
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      相关资源
      最近更新 更多