【发布时间】:2016-08-26 13:46:44
【问题描述】:
我尝试为我的应用设置夜间/白天选项。我有一个像 "<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)")
}
}
}
所以,日志显示了类似“attr NSColor object UIDeviceRGBColorSpace 0 0 0 1”或“attr NSStrokeColor object UIDeviceRGBColorSpace 0 0 0 1”的内容。那似乎是我需要将其更改为白色的黑色文本。
所以我把它放在循环中:
if object.name!.containsString("0 0 0 1"){
text.setAttributes(NSForegroundColorAttributeName, value: UIColor.whiteColor() , range: range)
}
我不确定这是否是最好的决定,但我得到了错误:调用中的额外参数“值”。 这有什么问题?仅替换非归属文本颜色的最佳方法是什么?
【问题讨论】:
-
没有
NSMutableAttributeString setAttributes:value:range:这样的方法。有setAttributes:range:或addAttribute:value:range:,或addAttributes:range:。 -
不要用对象的描述来比较,值应该是UIColor,直接比较就行了。
标签: ios swift nsmutableattributedstring