更改字符串中的颜色

时间:2013-06-07 09:33:49

标签: ios objective-c

我想知道如何更改字符串中子字符串的颜色。 例如,我有以下原始黑色子字符串:

NSString *original=@"Frank Megan Timmy
                    Marcus Andrea Matt
                   Jamie Lauren Marcus";

让我们假设用户已经做了一些事情,我想让Marcus Andrea Matt在原始字符串中变成红色(例如),并保持其他所有内容相同。

有谁能告诉我这是怎么做到的?

3 个答案:

答案 0 :(得分:1)

NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:@"Frank Megan Timmy Marcus Andrea Matt Jamie Lauren Marcus"];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(0,18)];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(18,18)];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(36,20)];

UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 250, 80)];
[label setLineBreakMode:NSLineBreakByWordWrapping];
[label setNumberOfLines:0];
[label setAttributedText:string];

[self.view addSubview:label];

答案 1 :(得分:0)

使用NSMutableAttributedString执行此操作。 将original的类型更改为NSMutableAttributedString并使用

[original addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:yourRange];

答案 2 :(得分:0)

请找到以下解决方案:

NSString *original=@"Frank Megan Timmy
                    Marcus Andrea Matt
                   Jamie Lauren Marcus";
NSMutableAttributedString* attrStr = [NSMutableAttributedString attributedStringWithString:original];
/ now we only change the color of "Frank"
[attrStr setTextColor:[UIColor redColor] range:NSMakeRange(0,5)];