我想一些花哨的文本添加到标签,但我碰到的一些问题NSMutableAttributedString类。 我试图实现四本:1.更改字体,2下划线范围3.更改范围的颜色,4标范围。
此代码:
- (void)applicationDidFinishLaunching:(NSNotification*)aNotification
{
NSMutableAttributedString* display = [[NSMutableAttributedString alloc]
initWithString:@"Hello world!"];
NSUInteger length = [[display string]length] - 1;
NSRange wholeRange = NSMakeRange(0, length);
NSRange helloRange = NSMakeRange(0, 4);
NSRange worldRange = NSMakeRange(6, length);
NSFont* monoSpaced = [NSFont fontWithName:@"Menlo"
size:22.0];
[display addAttribute:NSFontAttributeName
value:monoSpaced
range:wholeRange];
[display addAttribute:NSUnderlineStyleAttributeName
value:[NSNumber numberWithInt:1]
range:helloRange];
[display addAttribute:NSForegroundColorAttributeName
value:[NSColor greenColor]
range:helloRange];
[display addAttribute:NSSuperscriptAttributeName
value:[NSNumber numberWithInt:1]
range:worldRange];
//@synthesize textLabel; is in this file.
[textLabel setAttributedStringValue:display];
}
给我这个错误:
NSMutableRLEArray objectAtIndex:effectiveRange:: Out of bounds
另外,我试图与范围玩弄,但是当我试图变得更加困惑NSRange worldRange = NSMakeRange(4, 5);
。 我不明白为什么产生这样的: Hell^o wor^ld!
,其中^ S的内部的字母上标。
NSRange worldRange = NSMakeRange(6, 6);
产生预期的效果, hello ^world!^
。
什么是标签的样子: