标签NSMutableAttributedString以编程方式迅速4 [英] Label NSMutableAttributedString programmatically swift 4

查看:46
本文介绍了标签NSMutableAttributedString以编程方式迅速4的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须确保可以单击单词"Privacy"(隐私)以打开Web链接.我尝试了发现的建议,但这些建议已经过时了,它们似乎不再起作用..我不知道该如何解决问题

I have to make sure that I can click on the word "Privacy" in order to open a web link. I tried with the suggestions that I found but they are old things and they do not seem to work anymore .. I do not know how I can solve the problem

    private lazy var firstTermDescriptionLabel: UILabel = {
    let label = UILabel(frame: .zero)
    let firstTermsMessage = "I Agree to the License Terms and Privacy Policy"
    var attributedString = NSMutableAttributedString.init(string: "Privacy")
    attributedString.addAttribute(.link, value: "https://www.google.com/url?q=https://www.iubenda.com/privacy-policy/58446596&sa=D&source=hangouts&ust=1528787597335000&usg=AFQjCNEPkofPxSm7TDRMvxjOjCz5cio27w", range: NSRange(location: 0, length: 7))

    label.isUserInteractionEnabled = true
    label.text = firstTermsMessage
    label.font = UIFont.systemFont(ofSize: 13, weight: .regular)
    label.textAlignment = .left
    label.numberOfLines = 0
    label.translatesAutoresizingMaskIntoConstraints = false
    label.heightAnchor.constraint(equalToConstant: 36).isActive = true
    return label
}()

推荐答案

已更新为Swift 4

Updated to Swift 4

将此扩展名添加到您的项目中

Add this extension to your project

extension NSMutableAttributedString {

    public func setAsLink(textToFind:String, linkURL:String) -> Bool {

        let foundRange = self.mutableString.range(of: textToFind)
        if foundRange.location != NSNotFound {
//            self.addAttribute(NSLinkAttributeName, value: linkURL, range: foundRange)
            self.addAttributes([NSAttributedStringKey.link: URL(string: linkURL)!], range: foundRange)
            return true
        }
        return false
    }
}

在下面更改您的头像:

let firstTermsMessage = "I Agree to the License Terms and Privacy Policy"
        let attributedString = NSMutableAttributedString(string:firstTermsMessage)
        let linkWasSet = attributedString.setAsLink(textToFind: "Privacy", linkURL: "https://www.google.com/url?q=https://www.iubenda.com/privacy-policy/58446596&sa=D&source=hangouts&ust=1528787597335000&usg=AFQjCNEPkofPxSm7TDRMvxjOjCz5cio27w")

        if linkWasSet {
            // adjust more attributedString properties
        }
        lableAtt.attributedText = attributedString
        lableAtt.isUserInteractionEnabled = true
lableAtt.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleTapOnLabel(_:))))


 @objc func handleTapOnLabel(_ recognizer: UITapGestureRecognizer) {
        guard let text = lableAtt.attributedText?.string else {
            return
        }

        if let range = text.range(of:"terms") {
//            goToTermsAndConditions()
        } else if let range = text.range(of: "Privacy"){
            print(range)
            UIApplication.shared.open(URL(string: "https://www.google.com/url?q=https://www.iubenda.com/privacy-policy/58446596&sa=D&source=hangouts&ust=1528787597335000&usg=AFQjCNEPkofPxSm7TDRMvxjOjCz5cio27w")!, options: [:])
        }
    }

这篇关于标签NSMutableAttributedString以编程方式迅速4的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆