1

我正在使用 CorePlot 创建一个小型 iPhone 应用程序。该图由 10 个条形图组成。不幸的是,y 值可能在 0 到 100 万之间有所不同,因此我创建的绘图空间具有相当大的 yRange

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

我遇到的是我的应用程序在加载图表时真的很慢,我可以将此问题定位为 yAxisLength 的相当大的值。我已经删除了 y 轴上刻度线的创建,但性能仍然很差。谁能给我一个提示如何提高性能?

4

3 回答 3

3

确保更新标签参数,即使您不需要任何标签或刻度。默认标签策略会创建刻度线并将标签分开一个单位。这就是为什么大轴范围会大大降低您的应用程序的速度。它还为每个标签创建一个单独的核心动画层。创建 100 万个标签需要很长时间并且会占用大量内存。

如果您不需要任何刻度或标签,请将标签策略设置为CPTAxisLabelingPolicyNone. 否则,对各种标签属性进行必要的调整(使用哪些取决于您选择的策略),以便在轴范围内有合理数量的刻度。

于 2012-08-14T23:50:57.440 回答
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 回答
0

我没有使用过CorePlot,但也许您可以在尝试绘制数据之前对其进行缩放。

如果 y 尺度范围高达一百万,则将 y-max 和所有 y 值除以 100,000。然后只需将“(x100,000)”之类的内容添加到y轴标签。

于 2012-08-14T14:52:01.540 回答