我正在尝试在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]];
答案 0 :(得分:2)
使用CPTAxisLabelingPolicyNone
,如果您需要刻度线和/或网格线,您的应用必须提供刻度位置(主要和/或次要)。它们与标签无关,因此您可以在创建标签时标记没有刻度线的位置和/或跳过某些刻度位置。
编辑:
在创建标签时跟踪位置,并在完成后设置majorTickLocations
。
NSMutableSet *locations = [NSMutableSet set];
for (int loc=1; loc <= 4; loc++) {
// create labels
[locations addObject:@(loc)];
}
yAxis.majorTickLocations = locations;