我尝试为我的应用制作一个夜间/日期选项。我有一个像"<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)
}
我不确定这是否是最好的决定,但我得到了错误:在电话中额外参数'值'。 这有什么问题以及仅替换非属性文本的颜色的最佳方法是什么?
答案 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))