如何从NSNumberFormatter获取NSAttributedString?

时间:2014-12-29 20:31:46

标签: cocoa-touch nsattributedstring nsnumberformatter

我想使用这些方法:

- setTextAttributesForPositiveValues:

- setTextAttributesForNegativeValues:

像这样:

[nf setTextAttributesForPositiveValues:@{[UIColor colorWithRed:0.3 green:0.6 blue:1.0 alpha:1.0]:NSForegroundColorAttributeName}];

[nf setTextAttributesForNegativeValues:@{[UIColor colorWithRed:1.0 green:0.1 blue:1.0 alpha:1.0]:NSForegroundColorAttributeName}];

我正在尝试获取这样的属性文本:

NSAttributedString *str = [self.salaryFormatterColors attributedStringForObjectValue:@"Hi there" withDefaultAttributes:nil];

但是我回来了。

如何找回属性文本?

1 个答案:

答案 0 :(得分:2)

Cracking open Hopper,从iOS 9开始,似乎iOS NSNumberFormatter无条件地从nil返回-attributedStringForObjectValue:withDefaultAttributes:。我在文档中找不到这一点,所以这很有用,可能值得一试。

最好的办法是继承NSNumberFormatter并自己实施-attributedStringForObjectValue:withDefaultAttributes:NSFormatter引用有一些实现建议:

  

实现子类时,如果显示的字符串应具有某些属性,则返回NSAttributedString对象。例如,您可能希望财务应用程序中的负值显示为红色文本。调用stringForObjectValue的实现:获取非属性字符串,然后用它创建一个NSAttributedString对象(参见initWithString :)。当值的变化保证时,使用属性默认字典重置字符串的属性(例如,负值变为正值)

我想你可以提交雷达请求为iOS实现此功能。

编辑:我已经在this gist中实施了这样的格式化程序。