为价格格式化无障碍标签

Format accessibility label for price

我使用 NSNumberFormatter 来格式化画外音的价格。我发现它在没有使用千位分隔符和某些货币列表(如美元、欧元、英镑)时工作正常,但它似乎不适用于任何其他货币,例如CA$ 发音为 C-A-Dollar...配置 NSNumberFormatter 以获得适合画外音的体面输出的正确方法是什么?

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterCurrencyStyle;
formatter.usesGroupingSeparator = NO;
formatter.currencyCode = @"NOK";

view.accessibilityLabel = [formatter stringFromNumber:@100];

正如 Carl 在下面提到的,可以使用 .CurrencyPluralStyle。它根据语言环境格式化货币并忽略所有其他设置,甚至 usesGroupingSeparator。通过一些手动操作,它可能是一个合适的选择!

示例如下:

let formatter = NumberFormatter()
formatter.numberStyle = .currencyPlural
formatter.usesGroupingSeparator = false // being entirely ignored :/
formatter.locale = Locale(identifier: "en_CA")

let str = formatter.string(from: 1000.50)!

print("\(str)")

生产:

1,000.50 Canadian dollars

NSNumberFormatterCurrencyPluralStyle是否满足您的需求?不过,那是 iOS9 以及以后的版本。