UILabel设置选中部分文字高亮,自定义UILabel行间隔高度
2017-07-21 15:50
316 查看
第一步:找出高亮部分文字在整个文字中的位置:
- (NSArray *)rangesOfString:(NSString *)searchString inString:(NSString *)str {
NSMutableArray *results = [[NSMutableArray alloc] init];
NSRange searchRange = NSMakeRange(0, [str length]);
NSRange range;
while ((range = [str rangeOfString:searchString options:0 range:searchRange]).location != NSNotFound) {
[results addObject:[NSValue valueWithRange:range]];
searchRange = NSMakeRange(NSMaxRange(range), [str length] - NSMaxRange(range));
}
return results;
}
第二部:UILabel显示:
BussData * informationData = self.dataArray[indexPath.row];
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:informationData.bussName];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:6*FIT_X];//调整行间距
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [informationData.bussName length])];
NSString *nameString =[searchTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSString *neme =SYKFStringDisableEmoji(nameString);
NSArray * rangeArray = [self rangesOfString:neme inString:informationData.bussName];
for (int i = 0 ; i<rangeArray.count ; i++) {
NSValue * redRangeValue = rangeArray[i];
NSRange redRangeTwo = [redRangeValue rangeValue];
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:redRangeTwo];
}
UILabel * titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10*FIT_X,0, self.view.frame.size.width - 15*FIT_X, 45*FIT_X)];
titleLabel.numberOfLines = 0;
titleLabel.font = [UIFont systemFontOfSize:14*FIT_X];
titleLabel.textColor = [UIColor colorWithRed:0.20f green:0.20f blue:0.20f alpha:1.00f];
[cell.contentView addSubview:titleLabel];
[titleLabel setAttributedText:attributedString];
ok,完毕。顺便上个效果图吧:
如果感觉对你有帮助,请点赞,谢谢。
- (NSArray *)rangesOfString:(NSString *)searchString inString:(NSString *)str {
NSMutableArray *results = [[NSMutableArray alloc] init];
NSRange searchRange = NSMakeRange(0, [str length]);
NSRange range;
while ((range = [str rangeOfString:searchString options:0 range:searchRange]).location != NSNotFound) {
[results addObject:[NSValue valueWithRange:range]];
searchRange = NSMakeRange(NSMaxRange(range), [str length] - NSMaxRange(range));
}
return results;
}
第二部:UILabel显示:
BussData * informationData = self.dataArray[indexPath.row];
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:informationData.bussName];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:6*FIT_X];//调整行间距
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [informationData.bussName length])];
NSString *nameString =[searchTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSString *neme =SYKFStringDisableEmoji(nameString);
NSArray * rangeArray = [self rangesOfString:neme inString:informationData.bussName];
for (int i = 0 ; i<rangeArray.count ; i++) {
NSValue * redRangeValue = rangeArray[i];
NSRange redRangeTwo = [redRangeValue rangeValue];
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:redRangeTwo];
}
UILabel * titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10*FIT_X,0, self.view.frame.size.width - 15*FIT_X, 45*FIT_X)];
titleLabel.numberOfLines = 0;
titleLabel.font = [UIFont systemFontOfSize:14*FIT_X];
titleLabel.textColor = [UIColor colorWithRed:0.20f green:0.20f blue:0.20f alpha:1.00f];
[cell.contentView addSubview:titleLabel];
[titleLabel setAttributedText:attributedString];
ok,完毕。顺便上个效果图吧:
如果感觉对你有帮助,请点赞,谢谢。
相关文章推荐
- UILabel中选中文字高亮显示
- android--设置TextView部分文字的颜色和背景(高亮显示)
- android--设置TextView部分文字的颜色和背景(高亮显示)
- android--设置TextView部分文字的颜色和背景(高亮显示)
- Android 自定义textview 部分文字字体颜色高亮
- 怎样设置listview item选中时部分高亮?
- android--设置TextView部分文字的颜色和背景(高亮显示)
- android--设置TextView部分文字的颜色和背景(高亮显示)
- android--设置TextView部分文字的颜色和背景(高亮显示)
- android--设置TextView部分文字的颜色和背景(高亮显示)
- android--设置TextView部分文字的颜色和背景(高亮显示)
- 最新历史版本 :android--设置TextView部分文字的颜色和背景(高亮显示)
- 最新历史版本 :android--设置TextView部分文字的颜色和背景(高亮显示)
- 最新历史版本 :android--设置TextView部分文字的颜色和背景(高亮显示)
- jquery mobile 设置背景图片铺满整个屏幕以及自定义背景图文字颜色问题
- Eclipse 中同一个类内 选中一个变量,在类内其他地方的 该变量高亮标识出来的设置方法
- Android 实现部分文字高亮的三种方法
- VS2010和选中代码相同的代码的颜色设置,修改高亮颜色
- 选中文字高亮的css效果
- Eclipse设置选中高亮显示