1

CorePlotを使用して小さなiPhoneアプリケーションを作成しています。グラフは10本の棒で構成されています。残念ながら、y値は0から100万の間で異なる可能性があるため、かなり大きなyRangeでプロットスペースを作成します

plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(yAxisStart)
                                                length:CPTDecimalFromDouble(yAxisLength)];

私が経験しているのは、グラフをロードするときにアプリケーションが非常に遅いということです。この問題は、yAxisLengthのかなり大きな値に特定できます。y軸の目盛りの作成はすでに削除しましたが、それでもパフォーマンスは非常に悪いです。誰かが私にパフォーマンスを改善する方法のヒントを教えてもらえますか?

4

3 に答える 3

3

ラベルや目盛りが必要ない場合でも、必ずラベル付けパラメーターを更新してください。デフォルトのラベル付けポリシーは、目盛りを作成し、1単位離れてラベル付けします。そのため、軸の範囲が広いとアプリの速度が大幅に低下します。また、ラベルごとに個別のCoreAnimationレイヤーを作成します。100万個のラベルを作成するには、長い時間がかかり、多くのメモリを使用します。

目盛りやラベルが必要ない場合は、ラベル付けポリシーをに設定しCPTAxisLabelingPolicyNoneます。それ以外の場合は、軸の範囲内に適切な数のティックが存在するように、さまざまなラベル付けプロパティ(使用するポリシーは選択したポリシーによって異なります)に必要な調整を行います。

于 2012-08-14T23:50:57.440 に答える
0

CorePlotは使用していませんが、プロットする前にデータをスケーリングできる可能性があります。

yスケールの範囲が100万までの場合は、y-maxとすべてのy値を100,000で割ります。次に、「(x100,000)」のようなものをy軸ラベルに追加します。

于 2012-08-14T14:52:01.540 に答える
0
 y.labelingPolicy        = CPTAxisLabelingPolicyAutomatic;
    y.majorGridLineStyle    = nil;
    y.minorGridLineStyle    = nil;
    y.axisConstraints       = [CPTConstraints constraintWithLowerOffset:0.0];
    y.majorIntervalLength = CPTDecimalFromDouble(maxRange/2.0);

私のために働いた。

于 2013-06-01T06:43:43.917 に答える