来自具有格式说明符的本地化字符串的NSAttributedString

时间:2017-06-09 10:56:59

标签: cocoa cocoa-touch localization format nsattributedstring

我有一个本地化的字符串:

"%@ some text" = "%@ some text";

格式说明符%@可能出现在本地化字符串中的任何位置。

问题是这个字符串应该是NSAttributedString; %@替换和文本的其余部分应具有不同的属性。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

1)使用NSLocalizedString()获取您的本地化模板 2)获取要插入的文本 3)使用-stringWithFormat:组合两者 4)在模板中,使用-rangeOfString:找到占位符的位置 5)使用-rangeOfString:options:range:中最后一步中找到的起始位置,在格式化字符串中查找插入文本的范围。 (这里的第三个参数是搜索的范围;这可以避免找到未替换的文本。)
6)使用范围将属性应用于插入的文本,从格式化的字符串创建属性字符串。

答案 1 :(得分:-3)

您可以在这种情况下使用NSMutableAttributedStringHere是Apple文档

 NSString *textToDisplay = [NSString stringWithFormat:@"%@ somet text",localizedString];
 NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:textToDisplay];
       [attrStr addAttribute:NSFontAttributeName
                       value:[UIFont fontWithName:@"Exo2-Regular" size:30]
                       range:NSMakeRange(0, locatilzedString.length)];
       [attrStr addAttribute:NSFontAttributeName
                       value:[UIFont fontWithName:@"Exo2-Bold" size:30]
                       range:NSMakeRange(locatilzedString.length, attrStr.length)];

label.attributedText = attrStr