只有当范围从零开始时,给字符串加下划线才有效。如果我从1开始,那么它就工作了。不管怎样,绿色都有效。
+ (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。
您可以使用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];
}
Swift:
一个小方法。获取一个字符串,并在整个字符串长度上返回具有下划线属性的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
}