LoginSignup
49
47

More than 5 years have passed since last update.

iOS 7から追加されたDynamic Type機能を使ってみる

Last updated at Posted at 2013-10-09

iOS 7から設定画面に「文字サイズを変更」が追加されました。

6946da98e326fcaabf121b8694a9665d.jpeg

「Dynamic Type機能をサポートしているAppでは、下のスライダで指定したサイズでテキストが表示されます」とあります。では、Dynamic Type機能をサポートするにはどうしたら良いでしょうか。

わかったこと

これまでは、フォントの サイズ を直接数値で指定していましたが、Dynamic Typeでは スタイル を指定するようです。

具体的には、

+ (UIFont *)systemFontOfSize:(CGFloat)fontSize;

などのメソッドを用いて直接サイズ指定していたところを

+ (UIFont *)preferredFontForTextStyle:(NSString *)style

メソッドを用いてスタイルを指定します。(他にもスタイルを指定する方法がありますが、ここでは解説しません)

スタイルには次の値を指定できます。

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

画面に表示されるフォントサイズは、指定したスタイルによって自動的に決定するようです。

dynamic.jpeg

フォントサイズの設定変更を監視する

このままだと設定画面からフォントサイズを変更しても何も起こりません。フォントサイズの変更を監視するには、 NSNotificationCenterUIContentSizeCategoryDidChangeNotification を追加します。

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(preferredContentSizeChanged:)
name:UIContentSizeCategoryDidChangeNotification
object:nil];

こうすることにより、アプリ起動時にフォントサイズ設定が変わっていた場合、preferredContentSizeChanged が呼ばれるようになります。この中でテキストを再描画してあげれば良いでしょう。

実行結果

とりあえず、設定画面の文字サイズが反映されるようになりました。

min.pngmid2.pngmax.png

まだまだ調査段階なのでツッコミ、訂正など歓迎です!m(_ _)m

リンク

49
47
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
49
47