1
我正在通過使用core-plot庫在objective-c中製作圖形,我想改變負面軸標籤的顏色?我怎樣才能做到這一點?核心陰謀,如何改變消極軸刻度標籤的顏色
我正在通過使用core-plot庫在objective-c中製作圖形,我想改變負面軸標籤的顏色?我怎樣才能做到這一點?核心陰謀,如何改變消極軸刻度標籤的顏色
至少有三種不同的方法可以做到這一點,具體取決於您需要多大的靈活性。
使用兩個y軸。將它們設置爲相同,除了將可見範圍設置爲覆蓋正值和負值。根據需要爲每一個設置labelTextStyle
和/或labelFormatter
。
使用一個軸代表與實施-axis:shouldUpdateAxisLabelsAtLocations:
委託方法。返回NO並在每個提供的位置製作自定義標籤。這適用於任何標籤政策。
-(BOOL)axis:(CPTAxis *)axis shouldUpdateAxisLabelsAtLocations:(NSSet *)locations
{
static CPTTextStyle *positiveStyle = nil;
static CPTTextStyle *negativeStyle = nil;
NSNumberFormatter *formatter = axis.labelFormatter;
CGFloat labelOffset = axis.labelOffset;
NSDecimalNumber *zero = [NSDecimalNumber zero];
NSMutableSet *newLabels = [NSMutableSet set];
for (NSDecimalNumber *tickLocation in locations) {
CPTTextStyle *theLabelTextStyle;
if ([tickLocation isGreaterThanOrEqualTo:zero]) {
if (!positiveStyle) {
CPTMutableTextStyle *newStyle = [axis.labelTextStyle mutableCopy];
newStyle.color = [CPTColor greenColor];
positiveStyle = newStyle;
}
theLabelTextStyle = positiveStyle;
}
else {
if (!negativeStyle) {
CPTMutableTextStyle *newStyle = [axis.labelTextStyle mutableCopy];
newStyle.color = [CPTColor redColor];
negativeStyle = newStyle;
}
theLabelTextStyle = negativeStyle;
}
NSString *labelString = [formatter stringForObjectValue:tickLocation];
CPTTextLayer *newLabelLayer = [[CPTTextLayer alloc] initWithText:labelString style:theLabelTextStyle];
CPTAxisLabel *newLabel = [[CPTAxisLabel alloc] initWithContentLayer:newLabelLayer];
newLabel.tickLocation = tickLocation.decimalValue;
newLabel.offset = labelOffset;
[newLabels addObject:newLabel];
[newLabel release];
[newLabelLayer release];
}
axis.axisLabels = newLabels;
return NO;
}
使用CPTAxisLabelingPolicyNone
標籤策略。這是最靈活的,也是最重要的工作,因爲除了製作自定義標籤之外,您還必須計算刻度位置。
感謝這些解決方案,在第一種方法中,我必須自己定義+ ve/-ve範圍,但我使用由核心圖定義的自動範圍來存儲給定的數據。第二種方法可以列出axis的委託名和-axis的定義:shouldUpdateAxisLabelsAtLocations:this,並且在這個委託方法中,我將如何分離+ ve軸和-ve? – utariq 2012-01-30 11:37:06
查看製作標籤時的位置。用它來決定使用哪種文本樣式。 – 2012-01-30 11:55:28
埃裏克,我用CPTAxisDelegate和實現-axis:shouldUpdateAxisLabelsAtLocations:這到我的.m文件,但是這種方法沒有觸發那裏。你能列出它的任何例子嗎? – utariq 2012-01-31 10:38:01