我有基于搜索文本的UITableView数据。如何在所有数据单元格或整个UITableView中突出显示UITableViewCell标签中的文本?
这样的例子如果我用“Ball”搜索,UITableView加载“Red”文本包含数据需要现在我需要将所有标签都包含在“Ball”/“ball”文本中。
“Ball”是一个简单的搜索文本。
如何?我正在使用iOS v 8.2&目标c
答案 0 :(得分:2)
您需要使用NSAttributedString
//This needs to go into cellForRowAtIndexPath:
//Set title label
//StrTerm is result, and seachText is text searched for.
//Adjust the fonts according to your needs
NSMutableAttributedString *mattrStr = [[NSMutableAttributedString alloc]initWithString:[strTerm capitalizedString]];
[mattrStr addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(0, strTerm.length)];
[mattrStr addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"HelveticaNeue" size:16.0] range:NSMakeRange(0, strTerm.length)];
NSRange range = [[strTerm lowercaseString] rangeOfString:[searchText lowercaseString]];
[mattrStr setAttributes:@{
NSFontAttributeName: [UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0],
NSForegroundColorAttributeName: [UIColor whiteColor]
} range:range];
cell.textLabel.attributedText = mattrStr;
答案 1 :(得分:1)
您可以使用以下代码突出显示标签的文字颜色。 当您仅在tableview中加载搜索内容时,请在下方应用..
cell.textLabel.highlightedTextColor = [UIColor redColor];
//(OR)如果您使用的是自定义单元格,请使用以下代码...
cell.lblRef.highlightedTextColor = [UIColor redColor];
希望它可以帮助你......!
答案 2 :(得分:0)
使用此代码..
NSString *initial = @"Lorem ipsum and dolor sit er elit lamet, consectetaur cillium adipisicing pecu, and sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation and ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse and cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.";
NSString *text = [initial stringByReplacingOccurrencesOfString:@"and" withString:@"ex"]; //check for "and" replacing with "or"
NSMutableAttributedString *mutableAttributedString = [[NSMutableAttributedString alloc] initWithString:text];
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(ex)" options:kNilOptions error:nil];
NSRange range = NSMakeRange(0,text.length);
[regex enumerateMatchesInString:text options:kNilOptions range:range usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
NSRange subStringRange = [result rangeAtIndex:1];
[mutableAttributedString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:subStringRange];
}];
[_lableText setAttributedText:mutableAttributedString];
答案 3 :(得分:0)
试试这个。 TTTAttributedLabel
希望它有所帮助。