【问题标题】:Forcing Core Plot plotArea fill to update强制核心绘图 plotArea 填充更新
【发布时间】:2012-09-15 15:33:36
【问题描述】:

我正在尝试打开和关闭 Core Plot 绘图区域的填充。当我在应用程序启动时设置填充时,一切正常。第一次切换效果很好。除非旋转显示,否则后续打开或关闭填充的切换不起作用。

-(void)layoutGraphPlotAreaFill{
    CPTFill *plotFill=nil;
    if (self.graphPlotAreaHasFill) {
        plotFill=self.graphPlotAreaFill;
    }else{
        plotFill=nil;
    }

    self.graph.plotAreaFrame.plotArea.fill=plotFill;
}

我通过委托方法从设置视图控制器调用上述代码。上述方法(已删除)中的 NSLog 语句表明正在调用该方法,graphPlotAreaHasFill 属性设置正确且CPTFill 正确。它只是没有更新 plotArea 填充。同样,它只会在旋转显示器后更新。

使用 Core Plot 1.0

关于如何强制更新填充区域而无需旋转的任何建议?

谢谢

【问题讨论】:

    标签: iphone ios ipad core-plot


    【解决方案1】:

    在这里找到答案:Calling setNeedsDisplay:YES on layer-hosting view does not redraw the view

    原来因为填充是CALayer 子类,我可以调用setNeedsDisplay,它会刷新。更新代码如下:

    -(void)layoutGraphPlotAreaFill{
        CPTFill *plotFill=nil;
        if (self.graphPlotAreaHasFill) {
           plotFill=self.graphPlotAreaFill;
        }else{
           plotFill=nil;
        }
    
        self.graph.plotAreaFrame.plotArea.fill=plotFill;
        [self.graph.plotAreaFrame.plotArea setNeedsDisplay];
    }
    

    【讨论】:

    • 这是 Core Plot 中的一个错误——它应该自动重绘。我已经在存储库中修复了这个问题,它将包含在下一个版本中。您可以使用 Mercurial 提取最新代码以获取更改或继续使用您的修复程序,直到您更新到新版本的 Core Plot。
    • @Eric,这个错误是否也会影响 graph.title 属性?我有同样的问题,只告诉旋转或调用 [graph setNeedsDisplay] 修复它。
    • 当您设置新的标题文本时,图表标题应该会更新。您不必为了重绘标题而重绘整个图表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多