Dynamic Typeに対応してユーザー設定に合わせたフォントを使用する

2014年9月16日(火)
西方 夏子(にしかた・なつこ)
UIKit徹底解説 iOSユーザーインターフェイスの開発
iPhone/iPadアプリのUI開発テクニックを完全網羅!Amazon詳細ページへ

この記事は、書籍『UIKit徹底解説 iOSユーザーインターフェイスの開発』の内容を、Think IT向けに特別公開しているものです。

iOS 7からは、テキストコンテンツを表示する際に、ユーザーが好みの文字サイズを設定できます。これは「Dynamic Type」と呼ばれる機能です。アプリのDynamic Type対応は、ユーザー設定に合わせたフォントを作成し使用することを意味します。今回は、Dynamic Typeへの対応方法を解説します。

テキストスタイル属性を利用したフォントの生成

Dynamic Typeを使う場合、フォント名やサイズの代わりに「テキストスタイル」属性(UIFontDescriptorTextStyleAttribute)を使用してフォントを生成します。テキストスタイルには、以下の6通りが定義されています。これらのテキストスタイルは、表示すべきコンテンツに合わせてアプリ側が指定します。

  • UIFontTextStyleHeadline
  • UIFontTextStyleSubheadline
  • UIFontTextStyleBody
  • UIFontTextStyleCaption1
  • UIFontTextStyleCaption2
  • UIFontTextStyleFootnote

「設定」の[一般]→[文字サイズを変更]では、通常7段階の文字サイズが選択可能です。さらに、[一般]→[アクセシビリティ]で[より大きな文字]をオンにすると追加で5段階、合計12段階の設定が可能となります。
UIFontまたはUIFontDescriptorは、指定されたテキストスタイルと文字サイズ設定の組み合わせから適切なフォントを生成します。開発者は、生成されるフォントがどのようなフォントであるかを意識する必要はありません。

テキストスタイルは、Interface Builder(以降、IB)からでも、コードからでも設定できます。IBを利用する場合は、下記の通り、Attributes Inspectorの[Font]欄で設定したいテキストスタイルを選択します(図5)。

図5: IBでテキストスタイルを指定

コードで設定する場合、UIFontまたはUIFontDescriptorの生成時にテキストスタイルを指定します。UIFontの生成には、preferredFontForTextStyle:クラスメソッドを利用します(ソースコード17)。

[ソースコード17] テキストスタイルを指定してフォントを生成

UIFont *headlineFont = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];

同じく、UIFontDescriptorの生成には、preferredFontDescriptorWithTextStyle:クラスメソッドを利用します。直接フォントを生成する代わりにディスクリプタを生成するメリットは、あとから属性を追加できる点です。例えば、テキストスタイルを適用して、イタリック体のフォントを生成するには、2段階に分けてディスクリプタを設定します(ソースコード18)。

[ソースコード18] テキストスタイル指定のディスクリプタからフォントを生成

// Bodyスタイルのディスクリプタを生成
UIFontDescriptor *bodyFontDescriptor = 
[UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleBody];
// イタリック体の属性を追加
bodyFontDescriptor = 
[bodyFontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
// ディスクリプタからフォントを生成
UIFont *bodyFont = [UIFont fontWithDescriptor:bodyFontDescriptor size:0.0];

上記の通り、ディスクリプタを用いることで、ユーザー設定を活かしながらも独自のテキスト表現が可能となります。

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

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

連載バックナンバー

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

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

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

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