2012-07-09 55 views
1

我正在使用以下代碼片段來使用UIKit.h格式化iPad項目中的數字,但我無法弄清楚如何使負數顯示爲紅色。基於文檔,我嘗試過的方法無效。希望對此有所建議。如何將負數格式化爲紅色,用黑色表示正數

NSNumberFormatter *decimalStyle = [[[NSNumberFormatter alloc] init] autorelease]; 
[decimalStyle setFormatterBehavior:NSNumberFormatterBehavior10_4]; 
[decimalStyle setNumberStyle:NSNumberFormatterDecimalStyle]; 
[decimalStyle setPositiveFormat:@"###,###,##0"]; 
[decimalStyle setNegativeFormat:@"(###,##0)"]; 
+0

什麼是你想在顯示格式化的數字? – 2012-07-09 17:38:05

回答

4

此刻的你不能直接這樣做,你可以做的是這樣的:

UILabel *numberLabel = ...; // The label that will display your number 
numberLabel.text = [decimalStyle stringFromNumber:myNumber]; 
numberLable.textColor = (myNumber.floatValue < 0.0f) ? [UIColor redColor] : [UIColor blackColor]; 
1

問題的答案取決於你如何繪製文本,但這個想法是簡單地以任何你想要的顏色繪製文本。例如,如果您要在UILabel中繪製數字,則可以根據需要將標籤的textColor設置爲紅色或黑色。如果您使用核心文本繪製文本,則可以使用NSAttributedString並將顏色屬性添加到相關文本中。如果您使用HTML呈現文本,您當然需要設置包含該文本的HTML標記的適當屬性。

2

不知道這是否會在iOS上,但是,OS X的工作,我不喜歡這樣寫道:

//create new instance of NSNumberFormatter 
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 

//create mutable dictionary for storing formatting attributes 
NSMutableDictionary *negativeNumberColor = [NSMutableDictionary dictionary]; 

//set red colour 
[negativeNumberColor setObject:[NSColor redColor] forKey:@"NSColor"]; 

//apply red colour to number formatter 
[numberFormatter setTextAttributesForNegativeValues: negativeNumberColor]; 

//set formatter on NSTable column cell 
[[tableColumn dataCell] setFormatter: numberFormatter]; 
+0

嗨,對於我所知道的,這可能是一個很好的答案,但請在你的答案中加上一些解釋,以便像我這樣的n00bs知道你在說什麼。 – McGarnagle 2012-11-01 21:53:51

+0

@dbaseman補充說明 – grep 2012-11-01 22:04:14

+0

謝謝,好多了! – McGarnagle 2012-11-01 22:23:38