0

問題:

方程式があるとしましょう:y = x ^ 2

コアプロットを使用して、これを実行します。

-(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot {
    return 3000;
}

-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
    {
        NSNumber *num = nil;

        switch ( fieldEnum ) {
            case CPTScatterPlotFieldX:
                num = [NSNumber numberWithUnsignedInteger:index];
                break;
            case CPTScatterPlotFieldY:
                num = [NSNumber numberWithUnsignedInteger:index*index];
                break;
        }

        return num;
    }

ただし、ズームアウトした後でも(X軸が0から5000までのポイントを示している場合)、これは3000ポイントしか描画しません。したがって、残りの領域は描画されません。

私が欲しいのは、ズームアウトした後、完全に見える領域でプロットを更新できることです。

誰かがそれを行う方法を知っていますか?

4

1 に答える 1

0

まず、ポイントの数を、プロットを描画するために使用できるピクセルの数以下に制限します。それ以上の場合は、目に見えるメリットがないため、描画に時間がかかります。作図領域の寸法を取得するには、プロット領域の境界のサイズを確認してください。contentsScaleRetinaディスプレイを搭載したデバイスで実行している可能性がある場合は、幅と高さを掛けます。

プロットスペースデリゲートを使用して、ユーザーがグラフをズームまたはスクロールするタイミングを確認できます。デリゲートメソッド内のプロットを呼び出しreloadDataて、プロットデータを再計算します。

于 2012-09-09T17:24:49.173 に答える