如何将负数格式化为红色,将黑色格式化为正数

时间:2012-07-09 17:34:02

标签: ios

我使用以下代码片段来使用UIKit.h格式化iPad项目中的数字,但我无法弄清楚如何将负数显示为红色。我根据文档尝试过的是不行的。会对此提出一些建议。

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

3 个答案:

答案 0 :(得分: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 :(得分: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];

答案 2 :(得分:1)

答案取决于你如何绘制文字,但想法是简单地用你想要的任何颜色绘制文本。例如,如果您在UILabel中绘制数字,则可以根据需要将标签的textColor设置为红色或黑色。如果您使用Core Text绘制文本,则可以使用NSAttributedString并为相关文本添加颜色属性。如果您使用HTML呈现文本,那么您当然希望设置包含该文本的HTML标记的相应属性。