我正在寻找一种方法来给句子中的第一个单词涂上一种与句子的其他颜色不同的颜色。METHOD_001首先将整个字符串涂成白色,然后重新着色前8个字符为红色.METHOD_002将前8个字符涂上红色,然后使用字符串长度计算剩余字符并将其涂成白色。
METHOD_001绝对是最好的,但我很好奇是否有一种更简单的方法,我希望找到一个不带范围的NSMutableAttributedString addAttribute:,并将该属性应用于整个字符串,这似乎有点疏忽,对NSMutableAttributedString的所有修改都要求您指定一个范围,是不是遗漏了什么?
NB:代码包括硬编码值,以提高可读性。
// 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];发布于 2013-04-14 14:40:29
事实上,有一种很简单的方法可以做到。即使您将属性文本设置为您的标签,首先它是由标签的常规属性样式化的,然后是您的属性字符串覆盖相应的属性。因此,如果您事先做了[distanceLabel setTextColor:[UIColor whiteColor]] (在故事板或代码中),那么您只能通过使用attr重新着色所需的部分。字符串和达到您想要的效果。
https://stackoverflow.com/questions/15931698
复制相似问题