核心情节:“setLabelingPolicy:CPTAxisLabelingPolicyNone”和“setMajorGridLineStyle:majorGridLineStyle”相互排斥?

时间:2014-10-17 06:26:16

标签: ios core-plot

我正在尝试在Y轴上绘制自定义标签和网格线, 如果我设置标签策略CPTAxisLabelingPolicyNone,并将自定义标签添加到Y轴,我可以在Y轴上绘制所需的标签。

[yAxis setLabelingPolicy:CPTAxisLabelingPolicyNone];

然而,我无法使网格线工作。

[yAxis setMajorGridLineStyle:majorGridLineStyle];

如果我删除标签政策无,那么我可以获得网格线。

想知道可能是什么解决方案?

设置Y轴标签的代码:

NSMutableArray *yLabels = [NSMutableArray arrayWithObjects:@"None", @"Awake", @"Light",@"Middle",@"Deep", nil];
NSMutableArray *customLabelsY = [NSMutableArray arrayWithCapacity:[yLabels count]];
for (int loc=1; loc <= 4; loc++)
{
    CPTAxisLabel *newLabelY = [[CPTAxisLabel alloc] initWithText: [yLabels objectAtIndex:loc] textStyle:textStyle];
    newLabelY.tickLocation = [[NSDecimalNumber numberWithInt:loc] decimalValue];
    newLabelY.offset = yAxis.labelOffset + yAxis.majorTickLength;
    [customLabelsY addObject:newLabelY];
}
[yAxis setAxisLabels:[NSSet setWithArray:customLabelsY]];

1 个答案:

答案 0 :(得分:2)

使用CPTAxisLabelingPolicyNone,如果您需要刻度线和/或网格线,您的应用必须提供刻度位置(主要和/或次要)。它们与标签无关,因此您可以在创建标签时标记没有刻度线的位置和/或跳过某些刻度位置。


编辑:

在创建标签时跟踪位置,并在完成后设置majorTickLocations

NSMutableSet *locations = [NSMutableSet set];

for (int loc=1; loc <= 4; loc++) {
    // create labels

    [locations addObject:@(loc)];
}

yAxis.majorTickLocations = locations;