美文网首页iOS开发知识小集
iOS开发 改变字符串中所有指定字符串的颜色

iOS开发 改变字符串中所有指定字符串的颜色

作者: 有O梦想的咸鱼 | 来源:发表于2019-07-26 16:44 被阅读23次

    最近项目有个需求,输入搜索条件,要在搜索出的结果中把搜索条件变成蓝色:
    刚开始这么做:
    解释:model.groupName,后台返回的组名
    model.searchText,搜索条件(把外部的搜索条件保存到model中)

    NSMutableAttributedString *nameString = [[NSMutableAttributedString alloc]initWithString:model.groupName];
    NSRange  Range = NSMakeRange([[model.groupName string] rangeOfString:model.searchText].location, [[model.groupName string] rangeOfString:model.searchText].length);
    [nameString addAttribute:NSForegroundColorAttributeName value:Blue_Color range:Range];
    self.nameLabel.attributedText = nameString;
    

    这样做只能是第一次寻找到的会变颜色,字符串中出现的其他的就不会变:例:model.groupName = @“071107”,model.searchText = @“07”,最终结果就会变成:
    \color{blue}{07}1107。
    所以后面用如下方法:循环遍历每个字符。

    NSMutableAttributedString *nameString = [[NSMutableAttributedString alloc]initWithString:model.groupName];   
        for (int i = 0; i < model.groupName.length; i++) {
            if ((model.groupName.length - i) < model.searchText.length) {  //防止遍历剩下的字符少于搜索条件的字符而崩溃
       
               }else {
            NSString *str = [model.groupName substringWithRange:NSMakeRange(i, model.searchText.length)];
            if ([model.searchText isEqualToString:str]) {
                [nameString addAttribute:NSForegroundColorAttributeName value:Blue_Color range:NSMakeRange(i, model.searchText.length)];
                 i = i + (int)(model.searchText.length) - 1;
                }
            }
        }
        self.nameLabel.attributedText = nameString;
    

    结果:\color{blue}{07}11\color{blue}{07}

    相关文章

      网友评论

        本文标题:iOS开发 改变字符串中所有指定字符串的颜色

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