2014-10-17 42 views
4

只有在范围从零开始时,字符串的下划线才起作用。如果我从1开始,那么它的工作原理。绿色的颜色无论如何工作。如何使用NSAttributedString强调字符串的一部分objective-c

+ (NSAttributedString*)returnNSAttributedString:(NSString*)string range:(NSRange)range WithColour:(UIColor*)colour WithUnderLine:(BOOL)underline { 
    NSMutableAttributedString *attributedString = 
    [[NSMutableAttributedString alloc] initWithString:string]; 
    if (underline) { 
     [attributedString addAttributes:@{NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle)} range:range]; 
    } 
    [attributedString addAttribute:NSForegroundColorAttributeName value:colour range:range]; 
    [attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSRangeFromString(string)]; 
    return attributedString; 
} 

它适用于iOS 7的iOS不8.

+0

它可能涉及:http://stackoverflow.com/questions/25956183/nsmutableattributedstrings-attribute-nsstrikethroughstyleattributename-doesnt – Larme 2014-10-18 04:13:00

回答

10

您可以使用NSUnderlineStyleAttributeName和NSUnderlineColorAttributeName属性。您可以使用它像这样:

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]; 
} 
1

斯威夫特:

一个小方法。获取一个字符串并在整个字符串长度上返回一个带有下划线属性的NSMutableAttributedString。

func getUnderlinedAttributedString(string string: String) -> NSMutableAttributedString 
{ 
    let attributedString = NSMutableAttributedString.init(string: string) 
    let stringRange = NSMakeRange(0, attributedString.length) 

    attributedString.beginEditing() 
    attributedString.addAttribute(NSUnderlineStyleAttributeName, value: 1, range: stringRange) 
    attributedString.endEditing() 

    return attributedString 
} 
相关问题