一个UITableViewCell文本标签中的两种文本颜色

时间:2013-07-16 14:55:06

标签: ios uitableview nsattributedstring

我在UITableViewCell内有一个由两个单词组成的文字标签。

如何更改单词的颜色;将第一个单词设为绿色,将第二个单词设为红色?

4 个答案:

答案 0 :(得分:10)

NSString *twoWords = @"Green Red";
    NSArray *components = [twoWords componentsSeparatedByString:@" "];
    NSRange greenRange = [twoWords rangeOfString:[components objectAtIndex:0]];
    NSRange redRange = [twoWords rangeOfString:[components objectAtIndex:1]];

    NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:twoWords];

    [attrString beginEditing];
    [attrString addAttribute: NSForegroundColorAttributeName
                       value:[UIColor greenColor]
                       range:greenRange];

    [attrString addAttribute: NSForegroundColorAttributeName
                       value:[UIColor redColor]
                       range:greenRange];

    [attrString endEditing];

然后你可以直接在UILabel上使用attrString(> iOS 6,检查Apple Documentation)。

答案 1 :(得分:7)

最简单的方法是在iOS 6.0或更高版本中使用。您可以在titleLabelUITableViewCell(或任何其他包含文本的对象)中分配其中一个。如果你使用titleLabel,你会这样做:

[cell.titleLabel setAttributedText:yourAttributedString];

要使用NSAttributedString设置颜色,请执行以下操作:

NSMutableAttributedString* attributedString = [[NSMutableAttributedString alloc] initWithString:stringToManipulate];
[attributedString beginEditing];
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(0, widthOfFisrtWord)];
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(widthOfFisrtWord, widthOfSecondWord)];
[attributedString endEditing];

请注意,上面使用NSMakeRange提供的范围不是您需要的范围。您必须更改范围以满足您自己的需要,具体取决于两个单词之间是否有空格或其他字符。

Apple文档:

答案 2 :(得分:0)

This question地址获取字符串的一部分,您需要这样做。但是,您可以使用this question来了解如何更改颜色,而不是使用 BOLD 修改文本。

答案 3 :(得分:0)

通过使用NSAttributedString字符串,您可以设置两种不同的颜色。NSAttributedString

once check this one.