如何以编程方式在动态文本中提供相同标签的不同字体颜色

时间:2014-01-09 15:28:37

标签: ios objective-c uilabel nsattributedstring

嗨以下是我需要使用UILabel实现的视图。我听说过NSAttributedString,但不知道如何将其用于动态文本加载。

enter image description here

这里整个文字字体是Roboto-Light。但是,我必须从前两位医生的API响应中替换文本'Andrew Murphy博士,John Smith',并从API获得“23位医生”的计数,以便相应地调整此标签。您可以看到的文本颜色取决于文本是常量还是动态。我不知道如何实现它。因此,一些代码片段真的很受欢迎。

谢谢!

2 个答案:

答案 0 :(得分:5)

您可以将NSMutableAttributeString与addAttribute:value:range一起使用;

//Your entry string
NSString *myString = @"I have to replace text 'Dr Andrew Murphy, John Smith' ";
//Create mutable string from original one
NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:myString];

//Fing range of the string you want to change colour
//If you need to change colour in more that one place just repeat it
NSRange range = [myString rangeOfString:@"John Smith"];
[attString addAttribute:NSForegroundColorAttributeName value:[UIColor yellowColor] range:range];

//Add it to the label - notice its not text property but it's attributeText
label.attributedText = attString;

希望这个帮助

答案 1 :(得分:2)

使用原始文本创建NSMutableAttributedString

然后找到您想要着色的字符串的范围。将该范围与NSMutableAttributedString setAttributes:range:方法一起使用。

重复您想要着色的每一段文字。