具有多种字体颜色的UILabel文本

时间:2010-11-29 17:16:51

标签: ios iphone objective-c uilabel textcolor

有没有办法让textColor的{​​{1}}属性为两个不同的UILabel?基本上我正在尝试将UIColors UILabel中的第一个字符设为text property,其余字符为greenColor。我想避免使用两个不同的blackColor,因为我可能想要更改绿色字符文本中的位置。

8 个答案:

答案 0 :(得分:7)

从ios 6开始,您可以执行以下操作:

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]  initWithString:string];
[attributedString addAttribute:NSBackgroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0,3)];
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(4,9)];
cell.label.attributedText = attributedString;

答案 1 :(得分:4)

UILabel不支持此属性......

使用应该使用NSAttributedString ...并使用控制器绘制NSAttributesString ...

Controller for NSAttributedString

<强>更新

从iOS 6开始,您可以执行以下操作:

label.attributedText = attributedString;

答案 2 :(得分:2)

NSAttributedStrings支持相同字符串中的混合字体,样式和颜色,但目前任何标准UIKit控件都不支持。也就是说,你应该看看TTTAttributedLabel。它是UILabel的一个简单,高效的替代品,可以让您轻松地显示富文本。

答案 3 :(得分:1)

不 - 如果您需要格式化文本,Apple会说您应该在UIWebView中使用HTML。 (请参阅UITextView API docs的概述部分中的注释。)

答案 4 :(得分:1)

另一种替代方法是创建具有不同颜色的多个标签,并将它们布置在彼此旁边。尝试使标签的背景颜色透明。这可能很乏味但应该有效。

答案 5 :(得分:1)

Swift 3

extension NSMutableAttributedString {
        func setColorForText(textToFind: String, withColor color: UIColor) {
         let range: NSRange = self.mutableString.range(of: textToFind, options: .caseInsensitive)
          if range != nil {
            self.addAttribute(NSAttributedStringKey.foregroundColor, value: color, range: range)
          }
        }

}


func setColoredLabel() {
        var string: NSMutableAttributedString = NSMutableAttributedString(string: "My label with red blue and green colored text")
        string.setColorForText(textToFind: "red", withColor: UIColor.red)
        string.setColorForText(textToFind: "blue", withColor: UIColor.blue)
        string.setColorForText(textToFind: "green", withColor: UIColor.green)
        mylabel.attributedText = string
    }

<强>结果:

enter image description here

答案 6 :(得分:0)

不,这是不可能的 - 您需要自己绘画或使用多个标签撰写。

如果您可以接受3.2兼容性,则可以查看NSAttributedString

答案 7 :(得分:0)

当前不可能,通常你会使用NSAttributedString,但要在iOS上使用它,你需要滚动自己的标签。你可以使用UIWebView来解决这个问题,但是我不喜欢这样做,看起来很苛刻。