異なる色のラベルを作成する最も簡単な方法は何ですか?
たとえば、
「ジョン・ジョンソンがあなたにメッセージを送信しました」という メッセージを表示したいと思います。
しかし、それは青色で
、残りのメッセージは黒色John Johnson
で表示されるようにしたいと思います。
異なる色のラベルを作成する最も簡単な方法は何ですか?
たとえば、
「ジョン・ジョンソンがあなたにメッセージを送信しました」という メッセージを表示したいと思います。
しかし、それは青色で
、残りのメッセージは黒色John Johnson
で表示されるようにしたいと思います。
文字列内の個々の文字または文字の範囲に適用される属性(フォントやカーニングなど)と、TTTAttributedLabelのように視覚化できるカスタムラベルコントロールを設定するには、NSAttributedString
クラス(または可変クラス- )が必要です。NSMutableAttributedString
NSAttributedString
UILabelでは基本的に不可能です。これを行う場合は、オーバーライドする必要がありますdrawTextInRect
。ただし、OHAttributedLabelをお勧めします。これにはattributedStringがあり、範囲を指定するためにtextcolorを設定できます。
を使用しUIWebView
ます。
webView.text =
@"<span style:\"color:blue;\">John Johnson</span> sent you a message.";
CoreTextを使用します。お役に立てれば。
これを行うためにUILabel拡張機能を作成しました。基本的には、NSAttributedStringを使用して特定の範囲の色を定義します:https ://github.com/joaoffcosta/UILabel-FormattedText
この動作を自分で実装したい場合は、次のようにしてください。
NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithAttributedString: @"John Johnson sent you a message"];
[text addAttribute: NSFontAttributeName
value: font
range: range];
[self setAttributedText: text];
これをswiftで試してください(次の拡張子を持つコードを実行してください)
extension NSMutableAttributedString {
func setColorForText(textToFind: String, withColor color: UIColor) {
let range: NSRange = self.mutableString.range(of: textToFind, options: .caseInsensitive)
self.addAttribute(NSAttributedStringKey.foregroundColor, value: color, range: range)
}
}
UILabelで拡張機能を試してください:
let label = UILabel()
label.frame = CGRect(x: 40, y: 100, width: 280, height: 200)
let stringValue = "John Johnson sent you a message" // or direct assign single string value like "firstsecondthird"
label.textColor = UIColor.lightGray
label.numberOfLines = 0
let attributedString: NSMutableAttributedString = NSMutableAttributedString(string: stringValue)
attributedString.setColorForText(textToFind: "John Johnson", withColor: UIColor.blue)
label.font = UIFont.systemFont(ofSize: 26)
label.attributedText = attributedString
self.view.addSubview(label)
結果は次のとおりです。