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

NSUnderlineStyleAttributeName, NSStrikethroughStyleAttributeName

NSUnderlineStyleAttributeName, NSStrikethroughStyleAttributeName

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

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

定義スタイル
NSUnderlineStyleNone0x00なし
NSUnderlineStyleSingle0x01単一線
NSUnderlineStyleThick0x02太線
NSUnderlineStyleDouble0x09二重線
NSUnderlinePatternSolid0x0000実線
NSUnderlinePatternDot0x0100点線
NSUnderlinePatternDash0x0200破線(鎖線)
NSUnderlinePatternDashDot0x0300一点鎖線
NSUnderlinePatternDashDotDot0x0400二点鎖線
NSUnderlineByWord0x8000単語の下のみ

ここで、スタイル(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詳細ページへ

この記事のキーワード

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored