UILabel设置选中部分文字高亮,自定义UILabel行间隔高度

第一步:找出高亮部分文字在整个文字中的位置:

- (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

ok,完毕。顺便上个效果图吧:

UILabel设置选中部分文字高亮,自定义UILabel行间隔高度_第1张图片


如果感觉对你有帮助,请点赞,谢谢。

你可能感兴趣的:(iOS开发)