[iOS 10] Dynamic Type の変更点について

2016.10.13

はじめに

こんにちは。モバイルアプリサービス部の平屋です。

本記事では iOS 10 の Dynamic Type の変更点を紹介していきます。

Dynamic Type とは

iOS 7 で導入された仕組みです。ユーザーは iOS 標準の「設定アプリ」内で「文字サイズ設定」を変更することができます。設定された「文字サイズ」や「文字量」に応じた行間などの調整は OS 側が自動で行なってくれます。

文字サイズ設定用の画面は、設定アプリのトップから「画面表示と明るさ」->「文字サイズを変更」と辿ると表示できます。

ios-10-dynamic-type-00

アプリが「Dynamic Type」に対応していれば、ユーザーが選んだ文字サイズ設定をアプリ内のコンポーネントに反映できます。例えば、文字サイズ設定を一番大きい値に変更すると、設定アプリのトップ画面は以下のような表示になります。

ios-10-dynamic-type-01

実装

iOS 10 を対象としたアプリで Dynamic Type に対応させる場合、最低限必要な実装の例は以下の通りです。

// [1] フォントを指定
self.headlineLabel.font = UIFont.preferredFont(forTextStyle: .headline)

// [2] adjustsFontForContentSizeCategory に true を指定
self.headlineLabel.adjustsFontForContentSizeCategory = true

[1] フォントを指定

フォントサイズではなく、UIFontTextStyle を指定します。これは iOS 9 以前の場合と同じです。

[2] adjustsFontForContentSizeCategory に true を指定

iOS 10 で追加された adjustsFontForContentSizeCategory プロパティに true を指定します。すると、フォントの設定が自動で更新されるようになります。

iOS 9 以前の場合は、文字サイズ設定の変更を監視し、変更イベントが起こったタイミングで、フォントの設定を反映させる処理を自前で行う必要がありましたが、iOS 10 以降の場合はこの処理が不要になります。

動作結果

以下のように異なるスタイルを設定した UILabel を 6 つ並べて検証しました。

ios-10-dynamic-type-02

設定アプリで文字サイズ設定を一番小さい値に変更し、検証用のアプリに再び切り替えるという操作を行うと、検証用アプリがアクティブになったタイミングで、自動でフォントサイズが変わりました。

ios-10-dynamic-type-03

文字サイズ設定を一番大きい値に変更すると、以下のような表示になりました。

ios-10-dynamic-type-04

さいごに

本記事では iOS 10 の Dynamic Type の変更点を紹介しました。設定アプリ上での文字サイズ設定変更を反映させるのがかなり楽になりました。地味ですが嬉しい改良ですね。

参考資料