更改UILabel属性String

时间:2017-08-21 13:15:22

标签: ios swift nsattributedstring

我使用此代码将属性字符串添加到标签:

let attrString = NSMutableAttributedString(string: text)
// add some attributes
myLabel.attributedText = attrString

现在是否可以仅更改属性字符串myLabel的文本并保留属性?

3 个答案:

答案 0 :(得分:4)

通过它的mutableString属性

示例:

let astrMessage = NSMutableAttributedString(string: "Hello World")

//set some attributes
astrMessage.addAttribute(NSAttributedStringKey.foregroundColor,
                         value: UIColor.blue,
                         range: NSRange(location: 0, length: 5))
astrMessage.addAttribute(NSAttributedStringKey.foregroundColor,
                         value: UIColor.red,
                         range: NSRange(location: 6, length: 5))

//update
astrMessage.mutableString.setString("World Welcome")

注意:只有第一个属性将应用于更新的文本。

答案 1 :(得分:0)

获取您的标签属性

let linkAttributes = NSMutableAttributedString(attributedString: label.attributedText)

你可以给添加属性。

linkAttributes.addAttribute(NSLinkAttributeName, value: "username://marcelofabri_", range: linkRange)
let linkAttributes: [String : Any] = [
    NSForegroundColorAttributeName: UIColor.green,
    NSUnderlineColorAttributeName: UIColor.lightGray,
    NSUnderlineStyleAttributeName: NSUnderlineStyle.styleSingle.rawValue]

将归属文字添加到您的标签

myLabel.attributedText = linkAttributes 

答案 2 :(得分:0)

更改属性字符串的可变字符串,并将NSMutableAttributedString重新分配给您的标签。

attrString.mutableString.setString("newText")
myLabel.attributedText = attrString

<强> P.S 如果您无权访问属性字符串变量,请从标签中获取。

let myAttrString = myLabel.attributedText as? NSMutableAttributedString
if let attrString = myAttrString {
    attrString.mutableString.setString("newText")
    myLabel.attributedText = attrString
}