我有字典数组
[
{
"price": 0,
"test_name": "Multislice CT Scan Virtual Bronchoscopy"
},
{
"price": 0,
"test_name": "Multislice CT Scan Dental"
},
{
"price": 0,
"test_name": "Multislice CT Scan Joint (3D)"
},
{
"price": 0,
"test_name": "Multislice CT Scan Lumbar"
},
{
"price": 0,
"test_name": "Multislice CT Scan Spine - Cervical / Thoracic"
},
{
"price": 0,
"test_name": "Multislice CT Scan CT Urography"
}
]
并且正在将此Dictionary
数组转换为NSString
,方法是在每个字典值的末尾添加\ n
Multislice CT Scan Virtual Bronchoscopy
Rs.0
Multislice CT Scan Dental
Rs.0
Multislice CT Scan Joint (3D)
Rs.0
Multislice CT Scan Lumbar
Rs.0
Multislice CT Scan Spine - Cervical / Thoracic
Rs.0
Multislice CT Scan CT Urography
Rs.0
Multislice CT Scan (Arterial + Portal + Venous)
Rs.0
Multislice CT Scan Abdomen Triphasic Lever
Rs.0
现在我想在redColor中使用 Rs.0 字符串...如何为该特定字符串提供红色???
使用静态表..将整个字符串分配给单个标签..
答案 0 :(得分:2)
NSMutableAttributedString你要找的东西。
试试这个和示例代码
NSString *strFirst = @"Multislice CT Scan Virtual Bronchoscopy";
NSString *strSecond = @"Rs.0";
NSString *strComplete = [NSString stringWithFormat:@"%@ %@",strFirst,strSecond];
NSMutableAttributedString *attributedString =[[NSMutableAttributedString alloc] initWithString:strComplete];
//you can change your string color as your need like below
[attributedString addAttribute:NSForegroundColorAttributeName
value:[UIColor blackColor]
range:[strComplete rangeOfString:strFirst]];
[attributedString addAttribute:NSForegroundColorAttributeName
value:[UIColor redColor]
range:[strComplete rangeOfString:strSecond]];
self.yourLbl.attributedText = attributedString;
答案 1 :(得分:2)
您可以在iOS 6及更高版本中使用NSMutableAttributedString。
示例代码:
NSString *strFirst = @"Multislice CT Scan Virtual Bronchoscopy";
NSString *strSecond = @"Rs.0";
NSString *strComplete = [NSString stringWithFormat:@"%@\n %@",strFirst,strSecond];
NSMutableAttributedString *attributedString =[[NSMutableAttributedString alloc] initWithString:strComplete];
[attributedString addAttribute:NSForegroundColorAttributeName
value:[UIColor redColor]
range:[strComplete rangeOfString:strSecond]];
cell.textLabel.attributedText = attributedString;
答案 2 :(得分:1)
尝试使用此类似的东西,你的所有Rs.0将显示为红色
NSString *str = @"Multislice CT Scan Virtual Bronchoscopy Rs.0 Multislice CT Scan Dental Rs.0";
NSMutableAttributedString *attributedString =[[NSMutableAttributedString alloc] initWithString:str];
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(Rs.[0-9]*)" options:kNilOptions error:nil];
NSRange range = NSMakeRange(0,strFirst.length);
[regex enumerateMatchesInString:strFirst options:kNilOptions range:range usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
NSRange subStringRange = [result rangeAtIndex:1];
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:subStringRange];
}];
self.label.attributedText = attributedString;
希望这会对你有所帮助。
答案 3 :(得分:0)
使用此方法:
-(UIColor *)giveColorfromStringColor:(NSString *)colorname
{
SEL labelColor = NSSelectorFromString(colorname);
UIColor *color = [UIColor performSelector:labelColor];
return color;
}
答案 4 :(得分:0)
试试此代码
- (NSString *)stringFromColor:(UIColor *)color
{
const size_t totalComponents = CGColorGetNumberOfComponents(color.CGColor);
const CGFloat * components = CGColorGetComponents(color.CGColor);
return [NSString stringWithFormat:@"#%02X%02X%02X",
(int)(255 * components[MIN(0,totalComponents-2)]),
(int)(255 * components[MIN(1,totalComponents-2)]),
(int)(255 * components[MIN(2,totalComponents-2)])];
}