博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现搜索字符与搜索内容突出显示
阅读量:5322 次
发布时间:2019-06-14

本文共 1978 字,大约阅读时间需要 6 分钟。

1.创建可显示的字符集。

@property (nonatomic, copy) NSString *filter;

@property (nonatomic, strong) NSAttributedString *merchantShopNameRich;

2.获取到具体的搜索字符。

- (NSAttributedString *)merchantShopNameRich {

    
    if (!_merchantShopNameRich) {
        
        _merchantShopNameRich = [self stringColor:self.merchantShopName fontSize:15 searchText:self.filter];
    }
    
    return _merchantShopNameRich;
}

3.将确认的搜索字符与搜索结果进行匹配处理。

- (NSAttributedString *)stringColor:(NSString *)string fontSize:(NSInteger)fontSize searchText:(NSString *)fiter{

    //以不区分大小写的方式呈现文字
    UIColor * color = [UIColor colorTextAssistColor];
    NSMutableAttributedString * richStr = [[NSMutableAttributedString alloc]initWithString:string?:@""];
    NSDictionary *dic = @{NSFontAttributeName:[UIFont systemFontOfSize:fontSize],NSForegroundColorAttributeName:color};
    
    if (fiter.length <= 0) {
        return nil;
    }
    
    if ([string rangeOfString:fiter options:NSCaseInsensitiveSearch].location != NSNotFound) {
        NSRange range = [string rangeOfString:fiter options:NSCaseInsensitiveSearch];
        [richStr addAttributes:dic range:range];
    }
    
    return richStr;
}

4.在cell或控件内部对字符集进行具体的赋值。

- (void)setModel:(SearchModel *)model {

    
    _model = model;
    
    SearchCellFrame *cellFrameModel = [[SearchCellFrame alloc] initWithContent:model];
    _collectionView.frame = cellFrameModel.collecttionFrame;
    
    [_headeImage sd_setImageWithURL:[NSURL URLWithString:model.storefrontimagePath] placeholderImage:IMG(@"load_Price")];
    // 店铺详情
    _storeName.attributedText = model.merchantShopNameRich;    
    _signatureLab.text = model.signature;
    _totalLabel.text = [NSString stringWithFormat:@"已售:%ld", model.orderCountNum];
    _distanceLabel.text = model.distanceKM;
    
    if (model.isShopTime == 0) {
        _isSalesLab.hidden = NO;
    }else {
        _isSalesLab.hidden = YES;
    }
    [self.collectionView reloadData];
}

5.在控制器中,返回的结果赋值给filter字符串。

for (SearchModel * model in arrays) {

                    
                    model.filter = weakSelf.saerchName;
                    
                    for (FoodDetailModel *item in model.Commodity) {
                        
                        item.goodsFilter = weakSelf.saerchName;
                    }
                }

转载于:https://www.cnblogs.com/coderTan/p/6377492.html

你可能感兴趣的文章
组合数学 UVa 11538 Chess Queen
查看>>
oracle job
查看>>
Redis常用命令
查看>>
好用的在线Markdown编辑器
查看>>
wtforms
查看>>
EFCode First 导航属性
查看>>
嵌入式Linux开发
查看>>
Swift语法初见
查看>>
XML学习笔记(二)-- DTD格式规范
查看>>
前端基础之html
查看>>
I - Agri-Net - poj 1258
查看>>
git 的回退
查看>>
IOS开发学习笔记026-UITableView的使用
查看>>
Confluence配置数据库
查看>>
Java锁机制(一)synchronized
查看>>
002.文件删除功能
查看>>
[转载]电脑小绝技
查看>>
windos系统定时执行批处理文件(bat文件)
查看>>
06-redis主从
查看>>
linux下面桌面的安装
查看>>