我正在尝试在 Y 轴上绘制自定义标签和网格线, 如果我设置标签策略 CPTAxisLabelingPolicyNone,并将自定义标签添加到 Y 轴,我可以在 Y 轴上绘制所需的标签。
[yAxis setLabelingPolicy:CPTAxisLabelingPolicyNone];
但是我无法让网格线工作。
[yAxis setMajorGridLineStyle:majorGridLineStyle];
如果我删除 Label Policy None,那么我可以获得网格线。
想知道解决方案是什么?
设置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]];
最佳答案
使用 CPTAxisLabelingPolicyNone
,如果您需要刻度线和/或网格线,您的应用必须提供刻度位置(主要和/或次要)。它们独立于标签,因此您可以标记没有刻度线的位置和/或在创建标签时跳过一些刻度线位置。
编辑:
在创建标签时跟踪位置并在完成后设置 majorTickLocations
。
NSMutableSet *locations = [NSMutableSet set];
for (int loc=1; loc <= 4; loc++) {
// create labels
[locations addObject:@(loc)];
}
yAxis.majorTickLocations = locations;
关于ios - 核心剧情: Are "setLabelingPolicy:CPTAxisLabelingPolicyNone" and "setMajorGridLineStyle:majorGridLineStyle" Mutually exclusive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26419074/