Clickable link in TTTAttributedLabel with Swift

后端 未结 2 1340
闹比i
闹比i 2021-02-04 15:01

I want to make a UILabel with some text with a click-able links in it. Not links to webpages but to actions like I do with an UIButton. So I used

相关标签:
2条回答
  • 2021-02-04 15:36

    String.rangeOfString returns Range, but NSString.rangeOfString returns NSRange. So the following code should work:

    let name = "tomo"
    let string = "My name is \(name)"
    label.text = string
    let nsString = string as NSString
    let range = nsString.rangeOfString(name)
    let url = NSURL(string: "action://users/\(name)")!
    label.addLinkToURL(url, withRange: range)
    
    0 讨论(0)
  • 2021-02-04 15:44

    TTTAttributedLabel lable in swift 4.2

    import TTTAttributedLabel
    
      @IBOutlet weak var attributedLable: TTTAttributedLabel!
    
        override func viewDidLoad() {
            super.viewDidLoad()
            self.setup()
        }
    
        func setup(){
            attributedLable.numberOfLines = 0;
    
        let strTC = "terms and conditions"
        let strPP = "privacy policy"
    
        let string = "By signing up or logging in, you agree to our \(strTC) and \(strPP)"
    
        let nsString = string as NSString
    
        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.lineHeightMultiple = 1.2
    
        let fullAttributedString = NSAttributedString(string:string, attributes: [
            NSAttributedString.Key.paragraphStyle: paragraphStyle,
            NSAttributedString.Key.foregroundColor: UIColor.black.cgColor,
            ])
        attributedLable.textAlignment = .center
        attributedLable.attributedText = fullAttributedString;
    
        let rangeTC = nsString.range(of: strTC)
        let rangePP = nsString.range(of: strPP)
    
        let ppLinkAttributes: [String: Any] = [
            NSAttributedString.Key.foregroundColor.rawValue: UIColor.blue.cgColor,
            NSAttributedString.Key.underlineStyle.rawValue: false,
            ]
        let ppActiveLinkAttributes: [String: Any] = [
            NSAttributedString.Key.foregroundColor.rawValue: UIColor.blue.cgColor,
            NSAttributedString.Key.underlineStyle.rawValue: false,
            ]
    
        attributedLable.activeLinkAttributes = ppActiveLinkAttributes
        attributedLable.linkAttributes = ppLinkAttributes
    
        let urlTC = URL(string: "action://TC")!
        let urlPP = URL(string: "action://PP")!
        attributedLable.addLink(to: urlTC, with: rangeTC)
        attributedLable.addLink(to: urlPP, with: rangePP)
    
        attributedLable.textColor = UIColor.black;
        attributedLable.delegate = self;
    }
    
        func attributedLabel(_ label: TTTAttributedLabel!, didSelectLinkWith url: URL!) {
            if url.absoluteString == "action://TC" {
                print("TC click")
            }
            else if url.absoluteString == "action://PP" {
                print("PP click")
            }
        }
    

    Out put is look like below screenshot

    0 讨论(0)
提交回复
热议问题