-1

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を使用します。

回転せずに塗りつぶし領域を強制的に更新する方法について何か提案はありますか?

ありがとう

4

1 に答える 1

2

ここで答えが見つかりました: レイヤーホスティングビューで setNeedsDisplay:YES を呼び出すと、ビューが再描画されません

塗りつぶしは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];
}
于 2012-09-15T16:18:38.933 に答える