拥有不同颜色标签的最简单方法是什么?
例如,我想显示消息:
“John Johnson 向您发送了一条消息”
但我希望它John Johnson
是蓝色
的,其余的消息是黑色的。
拥有不同颜色标签的最简单方法是什么?
例如,我想显示消息:
“John Johnson 向您发送了一条消息”
但我希望它John Johnson
是蓝色
的,其余的消息是黑色的。
您需要NSAttributedString
类(或可变类 - NSMutableAttributedString
)来设置适用于字符串中单个字符或字符范围的属性(例如,字体和字距调整)以及NSAttributedString
可以像TTTAttributedLabel一样可视化的自定义标签控件。
在 UILabel 中基本上是不可能的。如果你想这样做,你必须覆盖drawTextInRect
应该被执行。但我会推荐OHAttributedLabel。这是有一个属性字符串是一个文本颜色,可以设置指定一个范围。
使用UIWebView
.
webView.text =
@"<span style:\"color:blue;\">John Johnson</span> sent you a message.";
使用核心文本。希望这可以帮助。
我创建了一个 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];
快速尝试一下(使用以下扩展名执行代码)
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)
这是结果: