參考:

效果圖
import Foundation
import UIKit
extension UITextView {
/// 添加鏈接文本(鏈接為空時則表示普通文本),且可加大指導(dǎo)字符串(默認font = 13)
///
/// - Parameters:
/// - string: 文本
/// - increaseStr: 需加大的字符串
/// - withURLString: 鏈接
/// - lineSpacing: 行間距
func appendLinkString(string:String,
increaseStr:String?,
withURLString:String?,
lineSpacing:CGFloat) {
// 原來的文本內(nèi)容
let attrString:NSMutableAttributedString = NSMutableAttributedString()
attrString.append(self.attributedText)
// 新增的文本內(nèi)容(使用默認設(shè)置的字體樣式)
let attrs = [NSFontAttributeName : self.font!,
NSForegroundColorAttributeName : self.textColor ?? UIColor.black] as [String : Any]
let appendString = NSMutableAttributedString(string: string, attributes:attrs)
let range:NSRange = NSMakeRange(0, appendString.length)
// 判斷是否是鏈接文字
if let urlStr = withURLString {
appendString.beginEditing()
appendString.addAttribute(NSLinkAttributeName, value:urlStr, range:range)
appendString.endEditing()
appendString.addAttribute(NSUnderlineStyleAttributeName, value: NSNumber.init(integerLiteral: NSUnderlineStyle.styleSingle.rawValue), range: range)
}
// 字體加大
if let increase: String = increaseStr {
let tipRange: NSRange = NSString.init(string: string).range(of:increase)
appendString.addAttribute(NSFontAttributeName, value: UIFont.systemFont(ofSize: 13), range: tipRange)
}
// 調(diào)整行間距
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = lineSpacing
appendString.addAttribute(NSParagraphStyleAttributeName,
value: paragraphStyle,
range: range)
// 合并新的文本
attrString.append(appendString)
// 設(shè)置合并后的文本
self.attributedText = attrString
}
}
控制器中配置TextView調(diào)用appendLinkString函數(shù)
- (void)configTextView{
self.textView.delegate = self;
NSString *str0 = @"溫馨提示:\n\n1.用戶使用快捷充值不收取任何手續(xù)費。單筆充值限額根據(jù)各個銀行上的充值限額為準,";
NSString *str1 = @"點擊查看銀行限額說明";
NSString *str2 = @"。\n";
NSString *str3 = @"2.因為銀行會在23:30到次日凌晨3:00進行系統(tǒng)數(shù)據(jù)處理,請盡量避免在此時間段充值。\n3.如果充值失敗,請撥打客服咨詢電話400-009-9595。";
[self.textView appendLinkStringWithString:str0
increaseStr:@"溫馨提示"
withURLString:nil
lineSpacing:5];
[self.textView appendLinkStringWithString:str1
increaseStr:nil
withURLString:@"look:bankCardLimits"
lineSpacing:5];
[self.textView appendLinkStringWithString:str2
increaseStr:nil
withURLString:nil
lineSpacing:5];
[self.textView appendLinkStringWithString:str3
increaseStr:nil
withURLString:nil
lineSpacing:5];
}
UITextViewDelegate獲取自定義鏈接Url,進行事件處理
#pragma mark - UITextViewDelegate
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange{
// 查看銀行卡限額
if ([URL.scheme isEqualToString:@"look"]) {
}
return YES;
}