我想在UILabel中为NSForegroundColorAttributeName
自定义颜色。但是设置NSUnderlineColorAttributeName
不会影响链接文字颜色,它仍然是蓝色。
但{{1}}有效,我可以自定义下划线颜色。是否有可能以某种方式更改链接文本颜色?
答案 0 :(得分:3)
当我尝试自定义UILabel时,我也遇到了同样的问题,我认为NSLinkAttributeName
的优先级高于NSForegroundColorAttributeName
。或者,也许,在前景色之后处理NSLinkAttributeName
。
我结束了所有NSLinkAttributeName
的循环,并将其替换为名称为CustomLinkAttribute
的自定义属性。之后,它就像一个魅力。通过访问我的自定义属性
func setupHtmlLinkTextStyle(attributedString: NSAttributedString) -> NSAttributedString {
let updatedString = NSMutableAttributedString(attributedString: attributedString)
attributedString.enumerateAttribute(NSLinkAttributeName,
in: NSRange(location: 0, length: attributedString.length),
options: [],
using:
{(attribute, range, stop) in
if attribute != nil {
var attributes = updatedString.attributes(at: range.location, longestEffectiveRange: nil, in: range)
attributes[NSForegroundColorAttributeName] = UIColor.green
attributes[NSUnderlineColorAttributeName] = UIColor.green
attributes[NSStrokeColorAttributeName] = UIColor.green
attributes["CustomLinkAttribute"] = attribute!
attributes.removeValue(forKey: NSLinkAttributeName)
updatedString.setAttributes(attributes, range: range)
}
})
return updatedString
}