美文网首页
iOS - 搜索关键字在结果中高亮显示

iOS - 搜索关键字在结果中高亮显示

作者: xiao小马哥 | 来源:发表于2020-03-20 14:21 被阅读0次
    1. 支持搜索的内容拆分为单个字符串与整体的数据进行比较
    
    - (NSMutableAttributedString *)stringWithHighLightSubstring:(NSString *)totalString substring:(NSString *)substring{
        NSMutableAttributedString * attributedString = [[NSMutableAttributedString alloc] initWithString:totalString];
        NSString * copyTotalString = totalString;
        NSMutableString * replaceString = [NSMutableString stringWithString:@" "];
        for (int i = 0; i < substring.length; i ++) {
            NSString *singleString = [substring substringWithRange:NSMakeRange(i, 1)];
            while ([copyTotalString rangeOfString:singleString].location != NSNotFound) {
                 NSRange range = [copyTotalString rangeOfString:singleString];
                 //颜色如果统一的话可写在这里,如果颜色根据内容在改变,可把颜色作为参数,调用方法的时候传入
                 [attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor orangeColor] range:range];
                 copyTotalString = [copyTotalString stringByReplacingCharactersInRange:range withString:replaceString];
             }
        }
        return attributedString;
    }
    
    
    
    E5D4FAB8-FBCB-45AB-AF74-A2CE938F1FEB.png
    1. 搜索的内容不进行拆分,直接匹配有则显示
    - (NSMutableAttributedString *)stringWithHighLightSubstring:(NSString *)totalString substring:(NSString *)substring{
        NSMutableAttributedString * attributedString = [[NSMutableAttributedString alloc] initWithString:totalString];
        NSString * copyTotalString = totalString;
        NSMutableString * replaceString = [NSMutableString stringWithString:@" "];
        for (int i = 0; i < substring.length; i ++) {
            [replaceString appendString:@" "];
        }
        while ([copyTotalString rangeOfString:substring].location != NSNotFound) {
             NSRange range = [copyTotalString rangeOfString:substring];
             [attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor orangeColor] range:range];
             copyTotalString = [copyTotalString stringByReplacingCharactersInRange:range withString:replaceString];
         }
        return attributedString;
    }
    
    A262F7A9-DA1F-4351-B8C5-0CD4A99143B6.png

    相关文章

      网友评论

          本文标题:iOS - 搜索关键字在结果中高亮显示

          本文链接:https://www.haomeiwen.com/subject/bgtjyhtx.html