我正在寻找一种方法,将句子中的第一个单词涂成与句子其余部分不同的颜色。
方法_001
首先将整个字符串着色为白色,然后将前8个字符重新着色为红色。
方法_002
在使用字符串长度计算剩余字符并将其涂成白色之前,将前8个字符涂成红色。
方法_001
绝对是最好的,但我很好奇是否有更简单的方法,我希望能找到
NSMutableAttributedString addAttribute:
它没有取值范围,只是将属性应用于整个字符串,对
NSMutableAttributedString
要求您指定一个范围,我是不是遗漏了什么?
注:
代码包括硬编码值,以提高可读性。
// 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];