單個關(guān)鍵詞
/// 指定關(guān)鍵詞高亮
/// - Parameter keyString: 關(guān)鍵詞
/// - Parameter keyColor: 高亮顏色
/// - Parameter isLineThrough: 是否下劃線
func m_setKeyColor(keyString:String,keyColor:UIColor,isLineThrough:Bool = false) -> NSAttributedString{
let strFullText:String = self
var range:NSRange?
var dicAttr:[NSAttributedString.Key:Any]?
let attributeString = NSMutableAttributedString.init(string: strFullText)
//不需要改變的文本
range = NSString.init(string: strFullText).range(of: String.init(strFullText))
//需要改變的文本
let ranges = self.rangeOfString(string: NSString.init(string: strFullText), andInString: keyString)
for range in ranges {
dicAttr = [
NSAttributedString.Key.foregroundColor:keyColor
]
if isLineThrough {
dicAttr?[NSAttributedString.Key.strikethroughStyle] = NSNumber.init(value: 1)
}
if range.location + range.length <= strFullText.count {
attributeString.addAttributes(dicAttr!, range: range)
}
}
return attributeString
}
多個關(guān)鍵詞 - 單色
/// 指定關(guān)鍵詞高亮
/// - Parameter keyString: 關(guān)鍵詞
/// - Parameter keyColor: 高亮顏色
/// - Parameter isLineThrough: 是否下劃線
func m_setKeyColorAll(keyString:[String],keyColor:UIColor,isLineThrough:Bool = false) -> NSAttributedString{
let strFullText:String = self
var range:NSRange?
var dicAttr:[NSAttributedString.Key:Any]?
let attributeString = NSMutableAttributedString.init(string: strFullText)
//不需要改變的文本
range = NSString.init(string: strFullText).range(of: String.init(strFullText))
//需要改變的文本
var index:Int = 0
for item in keyString {
//range = NSString.init(string: strFullText).range(of: item)
let ranges = self.rangeOfString(string: NSString.init(string: strFullText), andInString: item)
for range in ranges {
dicAttr = [
NSAttributedString.Key.foregroundColor:keyColor
]
if isLineThrough {
dicAttr?[NSAttributedString.Key.strikethroughStyle] = NSNumber.init(value: 1)
}
if range.location + range.length <= strFullText.count {
attributeString.addAttributes(dicAttr!, range: range)
}
}
index += 1
}
return attributeString
}
指定關(guān)鍵詞高亮 - 多色
/// 指定關(guān)鍵詞高亮 - 多色
/// - Parameter keyString: 關(guān)鍵詞[]
/// - Parameter keyColor: 高亮顏色
/// - Parameter isLineThrough: 是否下劃線
func m_setKeyColorAll(keyString:[String],keyColor:[UIColor],isLineThrough:Bool = false) -> NSAttributedString{
let strFullText:String = self
var range:NSRange?
var dicAttr:[NSAttributedString.Key:Any]?
let attributeString = NSMutableAttributedString.init(string: strFullText)
//不需要改變的文本
range = NSString.init(string: strFullText).range(of: String.init(strFullText))
//需要改變的文本
var index:Int = 0
for item in keyString {
//range = NSString.init(string: strFullText).range(of: item)
let ranges = self.rangeOfString(string: NSString.init(string: strFullText), andInString: item)
for range in ranges {
dicAttr = [
NSAttributedString.Key.foregroundColor:keyColor.count > index ? keyColor[index] : keyColor.first as Any,
]
if isLineThrough {
dicAttr?[NSAttributedString.Key.strikethroughStyle] = NSNumber.init(value: 1)
}
if range.location + range.length <= strFullText.count {
attributeString.addAttributes(dicAttr!, range: range)
}
}
index += 1
}
return attributeString
}