Cocoa Programming Tips 1001
Foundation
NSMutableAttributedString
Foundation - NSMutableAttributedString
文字に属性を設定する
Keywords: addAtribute
NSMutableAttributedString を使うと、文字に属性を設定できるんだ。こいつの addAtribute:value:range ってメソッドを使う。
Foundation/NSMutableAttributedString.h
- (void)addAttribute:(NSString *)name
value:(id)value
range:(NSRange)aRange;
ここで設定する属性は、Application Kit の方の NSAttributedString Class ClusterAdditions ってドキュメントに記載がある。こんな感じの属性があるんだ。
- NSFontAttributeName
- フォント属性
- NSForegroundColorAttributeName
- 文字の色
- NSBackgroundColorAttributeName
- 文字の背景色
- NSUnderlineStyleAttributeName
- 下線
- NSSuperscriptAttributeName
- 上付き
- NSBaselineOffsetAttributeName
- ベースラインからのオフセット(正負 OK)
- NSKernAttributeName
- カーニング(正負 OK)
- NSLigatureAttributeName
- リガチャをするか否か
- NSParagraphStyleAttributeName
- パラグラフスタイル
- NSAttachmentAttributeName
- テキストアタッチメント(よくわかんない)
じゃ、使ってみよう。一気にいろいろ使ってみるよ。
AttributedStringDrawingView.m
- (void)drawRect:(NSRect)frameRect
{
NSMutableAttributedString* str =
[[NSMutableAttributedString alloc]
initWithString:@"How's about your Mac? It's fine!"];
NSPoint point = { 10, 10 };
// Set font attribute
[str addAttribute:NSFontAttributeName
value:[NSFont fontWithName:@"Chicago" size:36.0]
range:NSMakeRange(0,5)];
[str addAttribute:NSFontAttributeName
value:[NSFont fontWithName:@"Helvetica" size:24.0]
range:NSMakeRange(6,5)];
[str addAttribute:NSFontAttributeName
value:[NSFont fontWithName:@"Sand" size:12.0]
range:NSMakeRange(12,4)];
[str addAttribute:NSFontAttributeName
value:[NSFont fontWithName:@"Monaco" size:48.0]
range:NSMakeRange(17,4)];
[str addAttribute:NSFontAttributeName
value:[NSFont fontWithName:@"Apple Chancery" size:36.0]
range:NSMakeRange(22,4)];
[str addAttribute:NSFontAttributeName
value:[NSFont fontWithName:@"Times" size:48.0]
range:NSMakeRange(27,4)];
// Set underline style attribute
[str addAttribute:NSUnderlineStyleAttributeName
value:[NSNumber numberWithFloat:1.0]
range:NSMakeRange(0,2)];
[str addAttribute:NSUnderlineStyleAttributeName
value:[NSNumber numberWithFloat:2.0]
range:NSMakeRange(2,3)];
// Set foreground color attribute
[str addAttribute:NSForegroundColorAttributeName
value:[NSColor redColor]
range:NSMakeRange(6,5)];
[str addAttribute:NSForegroundColorAttributeName
value:[NSColor colorWithCalibratedWhite:0.0 alpha:0.3]
range:NSMakeRange(17,4)];
// Set background color attribute
[str addAttribute:NSBackgroundColorAttributeName
value:[NSColor blueColor]
range:NSMakeRange(22,4)];
// Set ligature attribute
[str addAttribute:NSLigatureAttributeName
value:[NSNumber numberWithInt:1]
range:NSMakeRange(27,4)];
// Set kern attribute
[str addAttribute:NSKernAttributeName
value:[NSNumber numberWithFloat:10.0]
range:NSMakeRange(22,4)];
// Set superscript attribute
[str addAttribute:NSSuperscriptAttributeName
value:[NSNumber numberWithInt:1]
range:NSMakeRange(17,4)];
// Set baseline attribute
[str addAttribute:NSBaselineOffsetAttributeName
value:[NSNumber numberWithFloat:-10.0]
range:NSMakeRange(12,4)];
[str drawAtPoint:point];
}
こうやっていろんな属性を設定できるわけだ。最後の drawAtPoint: で画面に字を描いてる。