我正在使用CorePlot创建一个小型iPhone应用程序。该图由10个条组成。不幸的是,y值可能在0到100万之间不同,因此我使用相当大的yRange创建我的plotspace
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(yAxisStart)
length:CPTDecimalFromDouble(yAxisLength)];
我遇到的是我的应用程序在加载图表时非常慢,我可以将此问题查明为yAxisLength的相当大的值。我已经在y轴上删除了刻度标记的创建,但性能仍然非常糟糕。任何人都可以给我一个如何提高性能的提示吗?
答案 0 :(得分:3)
确保更新标签参数,即使您不需要任何标签或标记。默认标签策略创建刻度线并将一个单元标记为一个单位。这就是为什么大轴范围会使您的应用程序减速太多的原因。它还为每个标签创建单独的Core Animation层。创建100万个标签需要很长时间并占用大量内存。
如果您不需要任何刻度或标签,请将标签政策设置为CPTAxisLabelingPolicyNone
。否则,对各种标签属性进行必要的调整(使用哪些属性取决于您选择的策略),以便在轴范围内有合理的刻度数。
答案 1 :(得分:0)
我没有使用过CorePlot,但也许你可以在尝试绘制之前扩展数据。
如果y比例范围高达一百万,则将y-max和所有y值除以100,000。然后在y轴标签上添加类似“(x100,000)”的内容。
答案 2 :(得分:0)
y.labelingPolicy = CPTAxisLabelingPolicyAutomatic;
y.majorGridLineStyle = nil;
y.minorGridLineStyle = nil;
y.axisConstraints = [CPTConstraints constraintWithLowerOffset:0.0];
y.majorIntervalLength = CPTDecimalFromDouble(maxRange/2.0);
为我工作。