在UILabel中未使用NSAttributedText在iOS中突出显示超链接

时间:2015-10-26 16:01:15

标签: ios swift hyperlink uilabel nsattributedstring

我正在显示带有属性文字的标签。标签包含一些超链接。 我知道这些只能在textView中点击,但我认为它们在带有NSAttributedText的UILabel中显示为蓝色和下划线。

在我的情况下,链接与其他文本没有任何不同(不是蓝色或带下划线)。我是否需要更改UILabel的任何属性以使链接在UILabel中显示为蓝色?

let style = NSMutableParagraphStyle()
style.lineBreakMode = NSLineBreakMode.ByWordWrapping
let attributes = [NSFontAttributeName: self.defaultFont(), NSParagraphStyleAttributeName: style]
let attributedString = NSAttributedString(string: "www.somelink.com", attributes: attributes)
label.attributedText = attributedString

2 个答案:

答案 0 :(得分:4)

您需要将NSLinkAttributeName属性添加到NSAttributedString,如下所示:

attributedString.addAttribute(NSLinkAttributeName, value: "www.somelink.com", range: attributedString.string.rangeOfString("www.somelink.com"))

请检查您的需求范围。

答案 1 :(得分:1)

您需要NSLinkAttributeName。以上答案应该有效。

'use strict';

var SudoConstructor = (function () {

    /* We need bind, < IE9 needs a (tiny) polyfill */

    function protoEsqDeclare(sudoThis) {
        return sudoThis;
    }

    function protoEsqSet(sudoThis, newValA, newValB) {
        sudoThis.valA = newValA;
        sudoThis.valB = newValB;
    }

    function instanceCreator(valA, valB) {
        var sudoThis = {
            valA: valA,
            valB: valB
        };

        return {
            declare: protoEsqDeclare.bind(null, sudoThis),
            set: protoEsqSet.bind(null, sudoThis)
        };

    }

    return instanceCreator;

}());