属性付きテキストによるテキストの装飾(前編)

2014年9月22日(月)
西方 夏子(にしかた・なつこ)

NSUnderlineStyleAttributeName, NSStrikethroughStyleAttributeName

下線や取り消し線のスタイルを示すNSNumberオブジェクトです。
スタイルは、NSUnderlineStyleとして定義されている以下の値を使用して指定します。なお、NSUnderlineStyleNaneとNSUnderlineStyleSingle以外は、iOS 6では使えません。

[表2] 下線、取り消し線のスタイル(NSUnderlineStyle)

定義 スタイル
NSUnderlineStyleNone 0x00 なし
NSUnderlineStyleSingle 0x01 単一線
NSUnderlineStyleThick 0x02 太線
NSUnderlineStyleDouble 0x09 二重線
NSUnderlinePatternSolid 0x0000 実線
NSUnderlinePatternDot 0x0100 点線
NSUnderlinePatternDash 0x0200 破線(鎖線)
NSUnderlinePatternDashDot 0x0300 一点鎖線
NSUnderlinePatternDashDotDot 0x0400 二点鎖線
NSUnderlineByWord 0x8000 単語の下のみ

ここで、スタイル(NSUnderLineStyleXxx)、パターン(NSUnderlinePatternXxx)、単語ごとの指定(NSUnderlineByWord)は、OR加算して使用します。
例えば、二重点線を単語の下のみに引くには、以下のコードを記述します(ソースコード27)。生成したテキストを表示した結果が下図です(図8)。

[ソースコード27] 下線付きテキストの生成

NSUnderlineStyle underlineStyle =
NSUnderlineStyleDouble | NSUnderlinePatternDot | NSUnderlineByWord;

NSAttributedString *underlineText =
[[NSAttributedString alloc] initWithString:@"下線付きテキスト   Underline"
               attributes:@{NSUnderlineStyleAttributeName: @(underlineStyle)}];

図8: 下線付きテキスト

取り消し線を表示するには、NSUnderlineStyleAttributeNameの代わりにNSStrikethroughStyleAttributeNameを使用します。

NSUnderlineColorAttributeName,
NSStrikethroughColorAttributeName(iOS 7以降)

下線、取り消し線の色を示すUIColorオブジェクトです。

NSStrokeColorAttributeName

縁取りの色を示すUIColorオブジェクトです。
指定がない場合、NSFourgroundColorが指定する色が縁取りに使用されます。

NSStrokeWidthAttributeName

縁取りの太さ(フォントのポイントサイズに対するパーセンテージ)を示すNSNumber(float)オブジェクトです。
設定する値の符号によりテキストの塗りつぶし設定が異なります(表3)。

[表3] 設定値の符号と塗りつぶし、枠線の関係

塗りつぶし 枠線
0 あり なし
正の値 なし あり
負の値 あり あり

[ソースコード28] 縁取りテキストを生成

// 塗りつぶしのみのテキスト(通常の表示)
NSAttributedString *filledText =
[[NSAttributedString alloc] initWithString:@"塗りつぶしと縁取り"
              attributes:@{NSForegroundColorAttributeName: [UIColor lightGrayColor]}];
// 縁取りのみのテキスト
NSAttributedString *outlineText =
[[NSAttributedString alloc] initWithString:@"塗りつぶしと縁取り"
              attributes:@{NSStrokeColorAttributeName: [UIColor blackColor],
                           NSStrokeWidthAttributeName: @(5.0f)}]; // 正の値
// 縁取りと塗りつぶしのテキスト 
NSAttributedString *filledOutlineText =
[[NSAttributedString alloc] initWithString:@"塗りつぶしと縁取り"
              attributes:@{NSForegroundColorAttributeName: [UIColor lightGrayColor],
                               NSStrokeColorAttributeName: [UIColor blackColor],
                               NSStrokeWidthAttributeName: @(-5.0f)}]; // 負の値

上記の例で生成した属性付きテキストを表示した結果が下図です(図9)。

図9: 塗りつぶし(上)、縁取り(中)、塗りつぶしと縁取り(下)

属性付きテキストに使用できる属性はこれだけではありません。残りの属性については次回解説します。

この記事のもとになった書籍
UIKit徹底解説 iOSユーザーインターフェイスの開発

西方 夏子 著/丸山 弘詩 編
価格:3,800円+税
発売日:2014年06月13日発売
ISBN:978-4-8443-3608-2
発行:インプレスジャパン

UIKit徹底解説 iOSユーザーインターフェイスの開発

ユーザーインターフェイス(UI)を制御するUIKitは、iOSアプリの中心的役割を担います。UIKitを深く理解することが、アプリ開発での多くの問題解決に繋がります。本書では、アプリの起動から画面表示、画面レイアウト、イベントハンドリングと、常に稼働しているUIKitの機能を丁寧に解説します。メインとなるコンテンツの表示からステータスバーを含むバーの制御、フォントやテキストの改良など、ビューやテキストの「外観」(アピアランス)を改善する内容も充実させています。使用頻度の高いテーブルビューとコレクションビュー、そしてユニバーサルアプリ化に有益なカスタムコンテナビューコントローラに関しては、チュートリアル形式で解説します。また、StoryboardやAuto Layoutも今後のアプリ開発でさらに重要となる状況を見越して、詳細解説に留まらず同じくチュートリアルで多くの具体例を紹介します。

Amazon詳細ページへImpress詳細ページへ

著者
西方 夏子(にしかた・なつこ)

ソフトウェアエンジニア。大手電機メーカーにおける組込みソフトウェアの開発を経て、現在は個人でiOS向けのアプリケーションを開発している。代表作であるローン計算アプリ「iLoan Calc」は、個人の方のみならず、多くの不動産業、金融業の方からも愛用されている。『iPhoneアプリ開発エキスパートガイド iOS6対応』(共著・インプレスジャパン刊)、『上を目指すプログラマーのためのiPhoneアプリ開発テクニック iOS 7編』(共著・インプレスジャパン刊)などの執筆にも携わり、現在は執筆業を中心にアプリ開発と育児を両立中。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています