いまさら、Dynamic Typeを使ってみる。

いまさら、Dynamic Typeを使ってみる。

iOS7では、Dynamic Typeというフォントを統一して管理する機能がOSに組み込まれました。

この機能を使ったアプリは作っていなかったのですが、先日対応してみようと色々と調べたので備忘録がてら、記事にしました。

使い方

このDynamic Typeですが、UIFontを指定できる場面で下記のようなコードを挿入することで、使うことができます。

textField.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];

いくつかのDynamic Typeの種類の中から指定したUIFontを返すコードとなります。
フォントのレベルの種類は、以下のようになっています。

  • UIFontTextStyleHeadline 見出し
  • UIFontTextStyleBody 本文
  • UIFontTextStyleSubheadline サブ見出し
  • UIFontTextStyleFootnote 脚注
  • UIFontTextStyleCaption1 キャプション
  • UIFontTextStyleCaption2 少し小さいキャプション

これらは、表示している内容の扱いによって、強弱をつけるように使用すると良いと思います。

ただ、このコードだけでは、動的なフォントの変更を実現できません。

Dynamic Typeの変更の通知を受けるようにしておいて、通知を受けたときに更新するようにしておく方が良いです。

以下のコードで、動的に変更をを反映できます。

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(実行するメソッド)
                                             name:UIContentSizeCategoryDidChangeNotification
                                           object:nil];

この通知のセレクタに呼び出したいメソッドを設定しておいて、その中で先ほどのフォントを指定するコードを書いておけば良いです。

あと、直接Dynamic Typeに直接関係があるわけではないのですが、UITextFieldのPlaceholderのフォントを変更する場合は以下の様なコードになります。

textField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:textField.placeholder attributes:@{NSFontAttributeName:[UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline]}];

これで、PlaceholderのフォントもDynamic Typeが適用されます。

以上で、Dynamic Typeを使ってアプリのフォントを統一することができます。
統一感が出るので、どんどん使っていきたいと思います。

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です