NSStringの省略描画

覚え書き。

文字列を描画するとき,枠の中に入らない場合があって,折り返すかちょんぎるか省略するか,ってなる。

NSStringのdrawInRect:withAttributes:で描くとデフォルトでは折り返されてしまうので,ちょんぎるか省略する場合はwithAttributes:に


NSMutableParagraphStyle* lineBreakStyle = [[[NSMutableParagraphStyle alloc] init] autorelease];
[lineBreakStyle setLineBreakMode:NSLineBreakByTruncatingTail];

NSDictionary* attrib = [NSDictionary dictionaryWithObjectsAndKeys:lineBreakStyle, NSParagraphStyleAttributeName, nil];

のような感じで作ったattribを指定する。
NSLineBreakBy…は,折り返すのもちょん切るのも省略(頭・ケツ・真ん中)もある。

もちろんNSAttributedStringに設定してやってもOK。

ellipsisとtruncateというキーワードでは探しても見つからないんで,そういう機能はないのかと思いました(ググったら「1文字ずつ幅を計算して自分で省略するんだよハハハ」のようなのしか見つからず,マジか?!状態でした)。