前回の続き。NIAttributedLabelを使うとリッチテキスト的な文字装飾ができます。今回はその説明。

指定範囲の文字列のみ色やフォントを変更する

_label.text = @"01234567890";
// 文字装飾する範囲
NSRange range = NSMakeRange(4, 3);
// 指定範囲の文字色を変更
[_label setTextColor:[UIColor redColor] range:range];
// 指定範囲のフォントを変更
[_label setFont:[UIFont boldSystemFontOfSize:18.0f] range:range];
// 指定範囲にアンダーラインを付ける
[_label setUnderlineStyle:kCTUnderlineStyleSingle modifier:kCTUnderlinePatternSolid range:range];

以下のようになります。

01

文字に縁取りをつける

あまり使う機会はなさそうですが・・・

_label.text = @"01234567890";
_label.font = [UIFont systemFontOfSize:20.0];
// 縁取り幅
_label.strokeWidth = 4.0f;
// 縁取り色
_label.strokeColor = [UIColor grayColor];

このようになります。

02

縁取りの内側に色を付けたい時は、strokeWidthに負の値を指定します。textColor内側の色になります。

_label.strokeWidth = -4.0f;
_label.strokeColor = [UIColor grayColor];
_label.textColor = [UIColor greenColor];

このようになります。

03

文字の間隔を調整する

_label.textKern = 4.0f;

このようになります。

04

行の高さを調整する

_label.lineHeight = 32.0f;

05

Auto Layoutと相性が悪いかも・・・手元ではLabel全体の高さがうまく調整されなかった。いずれにせよ、これもあまり使う機会はなさそう。

 

iOS 6からはNSAttributedStringを使って、UILabel、UITextViewに文字装飾できるようになりました。それに関する記事はこちら。