我有一个本地化的字符串:
"%@ some text" = "%@ some text";
格式说明符%@
可能出现在本地化字符串中的任何位置。
问题是这个字符串应该是NSAttributedString
; %@
替换和文本的其余部分应具有不同的属性。我该如何解决这个问题?
答案 0 :(得分:0)
1)使用NSLocalizedString()
获取您的本地化模板
2)获取要插入的文本
3)使用-stringWithFormat:
组合两者
4)在模板中,使用-rangeOfString:
找到占位符的位置
5)使用-rangeOfString:options:range:
中最后一步中找到的起始位置,在格式化字符串中查找插入文本的范围。 (这里的第三个参数是搜索的范围;这可以避免找到未替换的文本。)
6)使用范围将属性应用于插入的文本,从格式化的字符串创建属性字符串。
答案 1 :(得分:-3)
您可以在这种情况下使用NSMutableAttributedString
。 Here是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