在UILabel中自定义NSLinkAttributeName的颜色

时间:2016-12-06 23:17:34

标签: ios swift nsattributedstring

我想在UILabel中为NSForegroundColorAttributeName自定义颜色。但是设置NSUnderlineColorAttributeName不会影响链接文字颜色,它仍然是蓝色。

但{{1}}有效,我可以自定义下划线颜色。是否有可能以某种方式更改链接文本颜色?

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
}