Ios 目标c-标签中的多种颜色

Ios 目标c-标签中的多种颜色,ios,objective-c,iphone,uilabel,nsattributedstring,Ios,Objective C,Iphone,Uilabel,Nsattributedstring,使用不同颜色的标签最简单的方法是什么 例如,我想显示消息: “约翰·约翰逊给你发了条短信” 但我希望约翰·约翰逊的John颜色为蓝色颜色 消息的其余部分使用黑色颜色。使用UIWebView webView.text = @"<span style:\"color:blue;\">John Johnson</span> sent you a message."; webView.text= @“约翰·约翰逊给你发了个信。”; 您需要NSAttributedStrin

使用不同颜色的标签最简单的方法是什么

例如,我想显示消息:
“约翰·约翰逊给你发了条短信”

但我希望约翰·约翰逊的
John
颜色为蓝色颜色

消息的其余部分使用黑色颜色。

使用
UIWebView

webView.text = 
  @"<span style:\"color:blue;\">John Johnson</span> sent you a message.";
webView.text=
@“约翰·约翰逊给你发了个信。”;

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

。如果要执行此操作,必须执行重写
drawTextInRect
。但我会推荐。这是一个attributedString是一个textcolor,可以设置为指定一个范围。

使用。希望这有帮助。

我创建了一个UILabel扩展来实现这一点。基本上,它使用NSAttributedString定义特定范围的颜色:

如果您希望自己实现此行为,只需执行以下操作:

NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithAttributedString: @"John Johnson sent you a message"];
[text addAttribute: NSFontAttributeName
             value: font
             range: range];
[self setAttributedText: text];
使用swift尝试此操作(使用以下扩展名执行代码)

尝试使用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)
结果如下:


我会把这当作苹果的一个错误。我们真的应该能够在iOS中使用属性字符串。但愿他们能在将来的版本中包含它。cough看看iOS6文档cough谢谢我会用你的解决方案:)
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)