做搜索时,要求部分文字高亮。网上能找到资料,BDSuggestLabel,有漏洞,只有第一个关键字变红,第二个就不变。在ARC环境下编译还老出错。所以自己整理了一下,改了代码。效果图
关键代码
for (NSString *keyw in_keyword) {
NSString *strTemp=keyw;
if (_keyword&&self.text) {
if ([self.textlength]>[keyw length]) {
for (int i=0; i<[self.textlength]-[keyw length]; i++) {
NSRange strRange=NSMakeRange(i,[keyw length]);
NSString *str=[self.textsubstringWithRange:strRange];
if ([str isEqualToString:strTemp]) {
NSValue *value=[NSValuevalueWithRange:strRange];
[rangeArr addObject:value];
}
}
}
}
}
for (NSValue *value in rangeArr) {
NSRange keywordRange=[value rangeValue];
[attrString setFont:font1 range:keywordRange];
[attrString setTextColor:color1 range:keywordRange];
}
1记得添加库文件CoreText.framework。
2BDSuggestLabel.m,NSAttributedString+Attributes.m设置为-fno-objc-arc。
3ARC条件下 用我工程中的文件,不用修改了。
非ARC网上有这四个文件,下载下来,修改BDSuggestLabel里面函数
- (void)drawTextInRect:(CGRect) aRect
的内容。
工程下载地址:http://down.51cto.com/data/911401
本文出自 “iOS悠悠Bug记” 博客,请务必保留此出处http://ios2013yoyo.blog.51cto.com/6260005/1272933