2014-10-17 66 views
2

我想通过Y轴绘制自定义标签和网格线, 如果我设置标签策略CPTAxisLabelingPolicyNone,并将自定义标签添加到Y轴,我可以在Y轴上绘制所需的标签。核心情节:是否“setLabelingPolicy:CPTAxisLabelingPolicyNone”和“setMajorGridLineStyle:majorGridLineStyle”相互排斥?

[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]]; 

回答

2

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


编辑:位置创建标签,并设置majorTickLocations完成后,当

跟踪。

NSMutableSet *locations = [NSMutableSet set]; 

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

    [locations addObject:@(loc)]; 
} 

yAxis.majorTickLocations = locations; 
+0

感谢您的回答。回复晚了非常抱歉。我发布了如何设置标签。请检查我的代码。问题依然存在,正如原来的问题所解释的那样。 – brbabu 2014-10-28 23:07:23