3

拥有不同颜色标签的最简单方法是什么?

例如,我想显示消息:
“John Johnson 向您发送了一条消息”

但我希望它John Johnson蓝色
的,其余的消息是黑色

4

6 回答 6

4

您需要NSAttributedString类(或可变类 - NSMutableAttributedString)来设置适用于字符串中单个字符或字符范围的属性(例如,字体和字距调整)以及NSAttributedString可以像TTTAttributedLabel一样可视化的自定义标签控件。

于 2012-08-14T10:41:02.177 回答
3

在 UILabel 中基本上是不可能的。如果你想这样做,你必须覆盖drawTextInRect应该被执行。但我会推荐OHAttributedLabel。这是有一个属性字符串是一个文本颜色,可以设置指定一个范围。

于 2012-08-14T10:41:25.047 回答
2

使用UIWebView.

webView.text = 
  @"<span style:\"color:blue;\">John Johnson</span> sent you a message.";
于 2012-08-14T10:38:52.990 回答
1

使用核心文本。希望这可以帮助。

于 2012-08-14T11:19:19.213 回答
0

我创建了一个 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];
于 2013-03-04T11:53:42.007 回答
0

快速尝试一下(使用以下扩展名执行代码)

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)

这是结果:

在此处输入图像描述

于 2017-10-24T10:10:19.193 回答