我正在寻找一种方法来将句子中的第一个单词着色为与句子其余部分不同的颜色。METHOD_001首先将整个字符串着色为白色,然后将前 8 个字符重新着色为红色。METHOD_002将前 8 个字符着色为红色,然后使用字符串长度计算剩余字符并将它们着色为白色。
METHOD_001绝对是最好的,但我很好奇是否有更简单的方法,我期待找到一个NSMutableAttributedString addAttribute:
不占用范围并将属性应用于整个字符串的方法,所有修改似乎有点疏忽aNSMutableAttributedString
要求你指定一个范围,我错过了什么吗?
注意: 代码包含硬编码值以提高可读性。
// METHOD_001
NSMutableAttributedString *attrString_001 = [[NSMutableAttributedString alloc] initWithString:@"Distance 1720 mm" attributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
[attrString_001 addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 8)];
[[self nameLabel] setAttributedText:attrString_001];
// METHOD_002
NSString *string = @"Distance 1720 mm";
NSUInteger stringLength = [string length];
NSMutableAttributedString *attrString_002 = [[NSMutableAttributedString alloc] initWithString:string];
[attrString_002 addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 8)];
[attrString_002 addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(9, (stringLength-9))];
[[self distanceLabel] setAttributedText:attrString_002];