TTTAttributedLabel 如何将多个字符串高亮显示

 

TTTAttributedLabel进行多个字符串的高亮显示。html

须要对每一个字符串进行匹配,从而获得全部须要高亮的NSRange,而后利用NSMutableAttributedString对每一个NSRange添加attributeios

 

首先 是字符串匹配算法,能够研究下kmp和bm算法,这里我直接用了OC自带的 NSRegularExpression 来进行正则表达式匹配,应该算是最简单直接的方式了正则表达式

 

传入字符串text,和须要高亮的字串patterns , 正则表达式就是字串的 "|" 集合, 根据正则表达式进行字串的大小写不敏感匹配, 而后枚举生成的NSTextCheckingResult,保存在数组中,接下来就能够对label字体进行设置了算法

这里用的是TTTAttribute的setText:afterInheritingLabelAttributesAndConfiguringWithBlock:方法, 在代码块里面遍历全部的NSTextCheckingResult对象,对其中的NSRange进行颜色字体的设置就完成了想要的效果数组

 

固然,也能够进行字符串的裁剪,本人本身的一个解决方案是给定一个须要的最大的字符串长度,进行裁剪字体

由于需求多种多样,裁剪的部分也不尽相同,这个就只能帮到这里了,若是有比较有趣或者奇葩的裁剪需求,欢迎和本人交流。spa

 

附上效果图一枚 :htm

 

具体源码请访问 http://www.cnblogs.com/sely-ios/p/4552134.html对象

相关文章
相关标签/搜索