归因于文本swift如何更改未归因文本的颜色

时间:2016-08-26 05:08:24

标签: ios swift nsmutableattributedstring

我尝试为我的应用制作一个夜间/日期选项。我有一个像"<font color="#aa2c2c">Red text</font>then back to normal "这样的文字。 所以我需要红色才能保持红色,只改变未归因的颜色。

这是我尝试的内容:

    text.enumerateAttributesInRange(NSRange(0..<text.length), options: []) { (attributes, range, _) -> Void in
        for (attribute, object) in attributes {
            NSLog("attr \(attribute) object \(object)")                
            }
        }
    }

因此,log显示类似“attr NSColor对象UIDeviceRGBColorSpace 0 0 0 1”或“attr NSStrokeColor对象UIDeviceRGBColorSpace 0 0 0 1”。这似乎是我需要改变为白色的黑色文本。

所以我把它放在循环中:

        if object.name!.containsString("0 0 0 1"){
            text.setAttributes(NSForegroundColorAttributeName, value: UIColor.whiteColor() , range: range)
        }

我不确定这是否是最好的决定,但我得到了错误:在电话中额外参数'值'。 这有什么问题以及仅替换非属性文本的颜色的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

 let text = "We tried to make this app as most intuitive as possible for you. If you have any questions don't hesitate to ask us. For a detailed manual just click here."
 let linkTextWithColor = "click here"

 let range = (text as NSString).rangeOfString(linkTextWithColor)

 let attributedString = NSMutableAttributedString(string:text)
 attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor() , range: range)

 self.helpText.attributedText = attributedString

myMutableString.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor(), range: NSRange(location:2,length:4))