2014-01-28 33 views
0

我想突出显示或在NSString中加下划线的一组特定字。我能够检测到这些单词是否存在,我只是无法让它们突出显示。突出显示或在一个字符串中加下划线的特定字

NSString * wordString = [NSString stringWithFormat:@"%@", [self.myArray componentsJoinedByString:@"\n"]]; 

self.myLabel.text = wordString; 

if ([wordString rangeOfString:@"Base Mix"].location == NSNotFound) 
{ 
    NSLog(@"string does not contain base mix"); 
} 
else 
{ 
    NSLog(@"string contains base mix!"); 

    NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:wordString]; 

    NSString * editedString = [NSString stringWithFormat:@"%lu", (unsigned long)[wordString rangeOfString:@"Base Mix"].location]; 

    NSRange theRange = NSMakeRange(0, [editedString length]); 

    [string beginEditing]; 
    [string removeAttribute:NSForegroundColorAttributeName range:theRange]; 
    [string addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:theRange]; 
    [string endEditing]; 

    [self.myLabel setAttributedText:string]; 
} 

此代码更接近正确的路径。我看到一个突出显示的字符,但这是字符串中的第一个字符,而不是我搜索的字词。

回答

4

您可以使用NSUnderlineStyleAttributeNameNSUnderlineColorAttributeName属性。我认为你可以这样使用它:

NSRange foundRange = [wordString rangeOfString:@"Base Mix"]; 
if (foundRange.location != NSNotFound) 
{ 
    [wordString beginEditing]; 
    [wordString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:1] range:foundRange]; 
    [wordString addAttribute:NSUnderlineColorAttributeName value:[NSColor redColor] range:foundRange]; 
    [wordString endEditing]; 
} 
0

我认为该部分从NSAttributedString中丢失。你可以尝试用Three20

2

你可以使用下面的代码,它涉及NSAttributed字符串。仅限作品ios6 +

NSString *tem = @"String with base Mix dfsdfsd "; 
NSString *substring = @"base Mix"; 
NSRange range; 
if ((range =[tem rangeOfString:substring]).location == NSNotFound) 
{ 
     NSLog(@"string does not contain base mix"); 
} 
else 
{ 
     NSMutableAttributedString *temString=[[NSMutableAttributedString alloc]initWithString:tem]; 
     [temString addAttribute:NSUnderlineStyleAttributeName 
            value:[NSNumber numberWithInt:1] 
            range:(NSRange){range.location,substring.length}]; 
     NSLog(@"%@",temString); 
     self.yourLabel.attributedText = temString; 
}