核心情节:轴交替使用LandTill和majorTickLocations显示不当

时间:2012-03-07 11:08:49

标签: ios colors core-plot

我正在使用一些预定义的范围值设置yAxis的majorTickLocations属性。我还设置了yAxis的alternatingBandFills属性来对这些范围进行颜色编码。我使用的代码如下所示:

     NSSet *majorTickLocations = [NSSet setWithObjects:
                                 [NSDecimalNumber numberWithDouble:lowerRedRangeFrom],
                                 [NSDecimalNumber numberWithDouble:lowerOrangeRangeFrom],
                                 [NSDecimalNumber numberWithDouble:greenRangeFrom],
                                 [NSDecimalNumber numberWithDouble:upperOrangeRangeFrom],
                                 [NSDecimalNumber numberWithDouble:upperRedRangeFrom],
                                 [NSDecimalNumber numberWithDouble:upperRedRangeTo],
                                 nil];
    yAxis.majorTickLocations = majorTickLocations;

    yAxis.alternatingBandFills = [NSArray arrayWithObjects:
                                      [CPTColor redColor],
                                      [CPTColor orangeColor],
                                      [CPTColor greenColor],
                                      [CPTColor orangeColor],
                                      [CPTColor redColor], nil];

除了一个特定问题外,一切都很好:

我使用的某些数据范围包含lowerRedRangeFrom = lowerOrangeRangeFrom。如果是这种情况会发生什么,只显示3个颜色编码的范围,这很好,这是预期的行为。由于alternatingBandFills数组按此顺序定义 - >红色,橙色,绿色,橙色,红色,显示的颜色为红橙绿色。这完全没问题。预期。

然而,在某些数据集上,其逻辑与其他数据集相同(即lowerRedRangeFrom = lowerOrangeRangeFrom),图形的alternatingBandFills显示为 - >橙,绿,橙。

有人可以解释一下为什么会这样吗?令人困惑的是,对于给定的数据集,没有问题,而对于其他数据集,则存在(尽管比例相同)。我知道Core-Plot将循环通过alternatinBandFills数组并显示颜色,但由于某种原因,它有时会在index = 1处开始循环,而不是在数组的开始处循环。

谢谢,

斯托

1 个答案:

答案 0 :(得分:0)

这种行为是正确的。如果lowerRedRangeFrom == lowerOrangeRangeFrom,那么第一个红色范围仍然存在,但它的高度为0。