ラベルに派手なテキストを追加しようとしていますが、NSMutableAttributedString クラスで問題が発生しました。私はこれを4つ達成しようとしていました.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!^
。
ラベルの外観: