3

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

我怎样才能改变单词的颜色;使第一个词绿色,第二个词红色?

4

4 回答 4

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 文档)。

于 2013-07-16T15:20:39.003 回答
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的范围不是您需要的范围。您必须更改范围以满足您自己的需要,具体取决于两个单词之间是否有空格或其他字符。

苹果文档:

于 2013-07-16T15:27:57.937 回答
0

这个问题解决了获取字符串的一部分,您需要这样做。您可以使用此问题来了解如何更改颜色,而不是使用BOLD修改文本。

于 2013-07-16T15:04:20.917 回答
0

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

一旦检查这个。

于 2013-07-16T15:05:42.103 回答