富文本帶點(diǎn)擊事件

app開發(fā)場(chǎng)景中,經(jīng)常會(huì)使用到富文本,常規(guī)做法使用NSMutableAttributedString設(shè)置
OC版本代碼

 NSMutableAttributedString * remindAttri = [[NSMutableAttributedString alloc] initWithString:@"我已閱讀并同意《服務(wù)協(xié)議》"];
    NSRange remindRange = NSMakeRange(remindAttri.length-6, 6);
    [remindAttri addAttribute:NSLinkAttributeName value:[NSURL URLWithString:[NSString stringWithFormat:@"%@",BRH_URL_PROTOCOL]] range:remindRange];
    [remindAttri addAttribute:NSStrokeColorAttributeName value:red_Color range:remindRange];
    self.remindLab.attributedText = remindAttri;
 

swift版本代碼

        let agreeString = "我已閱讀并同意《服務(wù)協(xié)議》"
        let attribute = NSMutableAttributedString(string: agreeString)
        let range = NSRange(location: 5, length: 6) 
        //設(shè)置顏色
        attribute.addAttributes([NSAttributedStringKey.strokeColor:UIColor.orange], range: range)
        //設(shè)置鏈接
        attribute.addAttributes([NSAttributedStringKey.link:"http://www.baidu.com"], range: range)

效果如圖:


1527844163347.jpg

明明是設(shè)置的其他顏色,然后開始調(diào)試,注釋掉設(shè)置跳轉(zhuǎn)鏈接代碼,看看效果


1527844133084.jpg

只要設(shè)置跳轉(zhuǎn)鏈接就會(huì)覆蓋顏色,最后不折騰了,選擇一個(gè)成熟的第三方框架
YYText,使用方法如下:
 let agreeLabelAttri = NSMutableAttributedString(string:agreeLabelText)
        //設(shè)置文本size
        agreeLabelAttri.yy_setTextHighlight(NSRange(location: 9, length: 10), color: UIColor.red, backgroundColor: UIColor.clear) { (containView, text, range, rect) in
            print("點(diǎn)擊了協(xié)議進(jìn)行跳轉(zhuǎn)")
        }
        //為文本設(shè)置屬性
        agreeLabelAttri.yy_font = UIFont.systemFont(ofSize: 14)
        agreeLabelAttri.yy_color = UIColor.hexStringToColor(hexString: "9DA4B3")
        agreeLabelAttri.yy_setColor(UIColor.hexStringToColor(hexString: "FE2E3B"), range: NSRange(location: 9, length: 10))
        agreeLabel.attributedText = agreeLabelAttri

效果如下:


1527844716903.jpg

這種功能還是使用成熟的第三方框架更方便,自己實(shí)現(xiàn),還是有一些坑的,swift還有很長(zhǎng)的路要走啊

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第1章.酒館里來(lái)了個(gè)年輕人 老樹旁邊,十分突兀的,被人建了一家酒館。酒館的對(duì)面則是一家鐵匠鋪,里面的鐵匠似乎從生下...
    一丘孤行閱讀 256評(píng)論 0 2
  • 2002年的諾貝爾經(jīng)濟(jì)學(xué)獎(jiǎng)得主丹尼爾·卡尼曼和唐納德·雷德梅爾做過這樣一個(gè)實(shí)驗(yàn): 在病人做大腸鏡檢查期間,他們請(qǐng)1...
    孫小鑫的心閱讀 1,819評(píng)論 4 16
  • 極光推送相比較個(gè)推,除了以往的“通知”外,多了一個(gè)“自定義消息”,看一下官方文檔中的一段解釋: 通知:簡(jiǎn)單場(chǎng)景下的...
    Elvist閱讀 33,952評(píng)論 26 26

友情鏈接更多精彩內(nèi)容