您的位置:首页 > 产品设计 > UI/UE

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,完毕。顺便上个效果图吧:



如果感觉对你有帮助,请点赞,谢谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息