fuz*_*oat 5 iphone cocoa-touch uicolor
我正在寻找一种方法,使句子中的第一个单词的颜色与句子其余部分的颜色不同.METHOD_001首先将整个字符串着色为白色,然后将前8个字符重新着色为红色.METHOD_002将前8个字符设置为红色,然后使用字符串长度计算剩余字符并将其着色为白色.
METHOD_001绝对是最好的,但我很好奇,如果有一个更简单的方法,我期望找到一个NSMutableAttributedString addAttribute:
没有范围,只是将属性应用于整个字符串,似乎有点疏忽所有修改a 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];
Run Code Online (Sandbox Code Playgroud)
实际上有很简单的方法可以做到这一点.即使您将标签文本设置为标签,首先它会通过标签的常规属性进行样式化,然后您的属性字符串会覆盖相应的标签.因此,如果您[distanceLabel setTextColor:[UIColor whiteColor]]
事先(在故事板或代码中),您可以使用attr重新着色所需的部分.字符串,达到你想要的效果.
归档时间: |
|
查看次数: |
2975 次 |
最近记录: |