3

UITableViewCell2 つの単語で構成される の中にテキスト ラベルがあります。

単語の色を変更するにはどうすればよいですか。最初の単語を緑に、2 番目の単語を赤にしますか?

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 Documentationを確認してください)。

于 2013-07-16T15:20:39.003 に答える
7

これを行う最も簡単な方法は、iOS 6.0 以降でそれらの 1 つと のtitleLabel(またはテキストを保持する他のオブジェクト) に割り当てますUITableViewCell。を使用している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た範囲は、必要な範囲ではないことに注意してください。2 つの単語の間にスペースがあるか、他の文字があるかによって、必要に応じて範囲を変更する必要があります。

アップルのドキュメント:

于 2013-07-16T15:27:57.937 に答える