對於我的應用程序的圖形(線條圖),將軸標籤格式化爲十分之一是沒有意義的。沒有提供自定義標籤,看起來沒有辦法改變它。如何使用自定義標籤在覈心圖上打勾?
我能夠根據this answer中的示例代碼添加自定義軸標籤,但標籤沒有刻度標記。
這是一個問題(我沒有看到任何東西here)還是我錯過了什麼?
對於我的應用程序的圖形(線條圖),將軸標籤格式化爲十分之一是沒有意義的。沒有提供自定義標籤,看起來沒有辦法改變它。如何使用自定義標籤在覈心圖上打勾?
我能夠根據this answer中的示例代碼添加自定義軸標籤,但標籤沒有刻度標記。
這是一個問題(我沒有看到任何東西here)還是我錯過了什麼?
如果您想使用不同於默認格式的數字標籤,請創建一個NSNumberFormatter
對象,將其設置爲您需要的任何格式,然後將其分配給軸上的labelFormatter
屬性。
如果您需要將標籤格式化爲日期和/或時間,請查看CPTimeFormatter
類。
這對我有效!
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:0];
y.labelFormatter = formatter;
派生一個類從NSNumberFormatter
(例如,MyFormatter
),並覆蓋stringForObjectValue:
- (NSString *)stringForObjectValue:(NSDecimalNumber *)coordinateValue {
return @"MyLabel";
}
那麼你軸線labelFormatter屬性設置爲MyFormatter
一個實例,如:
MyFormatter *formatter = [[MyFormatter alloc] init];
x.labelFormatter = formatter;
[formatter release];
我做了你的解釋,但stringForObjectValue不叫... – Luc 2010-07-08 21:00:09
你也可以調整類似這樣的方法:
#import "NSNumberFormatter+BigNumber.h"
#import <objc/runtime.h>
static Method origStringFromNumberMethod = nil;
@implementation NSNumberFormatter (BigNumber)
-(NSString *)stringFromBigNumber:(NSNumber*)number{
int result = 0;
int level = 1;
NSString *format = @"";
if([number integerValue] >= 1000000000) {
level = 1000000000;
format = @"b";
}
if([number integerValue] >= 1000000) {
level = 1000000;
format = @"m";
}
if([number integerValue] >= 1000){
level = 1000;
format = @"k";
}
result = [number integerValue]/level;
NSString *kValue = [NSString stringWithFormat:@"%d%@",result,format];
return kValue;
}
+ (void)initialize {
origStringFromNumberMethod = class_getClassMethod(self, @selector(stringFromNumber:));
method_exchangeImplementations(origStringFromNumberMethod,
class_getClassMethod(self, @selector(stringFromBigNumber:)));
}
@end
您好, 您是如何設法使用自定義標籤獲得某些刻度的?同樣的問題在這裏,自定義標籤好,但沒有滴答聲。 謝謝,呂克 – Luc 2010-06-17 13:15:30