UITableViewCell
2 つの単語で構成される の中にテキスト ラベルがあります。
単語の色を変更するにはどうすればよいですか。最初の単語を緑に、2 番目の単語を赤にしますか?
UITableViewCell
2 つの単語で構成される の中にテキスト ラベルがあります。
単語の色を変更するにはどうすればよいですか。最初の単語を緑に、2 番目の単語を赤にしますか?
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を確認してください)。
これを行う最も簡単な方法は、iOS 6.0 以降でnsattributedstringを使用することです。それらの 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 つの単語の間にスペースがあるか、他の文字があるかによって、必要に応じて範囲を変更する必要があります。
アップルのドキュメント: