xcrun simctl uiは、iOSシミュレータのUI設定を取得・変更するサブコマンドである。 content_sizeオプションを使うと、Dynamic Type(文字サイズ設定)をコマンドラインから取得・変更できる。

現在の設定を取得する

値を指定せず実行すると、現在の文字サイズカテゴリを取得できる。 デバイスはUDIDで指定するほか、起動中のデバイスであればbootedが使える。

$ xcrun simctl ui booted content_size
large

標準サイズは以下の7段階である。

  • extra-small
  • small
  • medium
  • large
  • extra-large
  • extra-extra-large
  • extra-extra-extra-large

これより大きいアクセシビリティ向けの拡張サイズとして、以下が用意されている。

  • accessibility-medium
  • accessibility-large
  • accessibility-extra-large
  • accessibility-extra-extra-large
  • accessibility-extra-extra-extra-large

このほかunsupported(プラットフォームやランタイムが対応していない)、unknown(設定の検出に失敗した)が返ることもある。 起動していないデバイスに対して実行するとエラーにはならず、unknownが返る。

設定を変更する

カテゴリ名を直接指定するほか、increment/decrementで現在値から1段階ずつ変更できる。

$ xcrun simctl ui booted content_size accessibility-extra-large
$ xcrun simctl ui booted content_size
accessibility-extra-large

$ xcrun simctl ui booted content_size decrement
$ xcrun simctl ui booted content_size
accessibility-large

見た目の違い

文字サイズを変えると、ウィジェットなどDynamic Typeに対応したテキストの表示サイズが変わる。 カレンダーウィジェットを比較すると、extra-smallでは1行に収まっていた「今日の予定なし」というテキストが、accessibility-extra-extra-extra-largeでは2行に折り返されている。

extra-small指定時のカレンダーウィジェットは以下のとおりである。

文字サイズextra-small

accessibility-extra-extra-extra-large指定時は、同じテキストが大きく表示され折り返される。

文字サイズaccessibility-extra-extra-extra-large

活用例: Dynamic Type対応のUI確認

文字サイズを大きくした際にレイアウトが崩れていないかは、アプリのアクセシビリティ対応で確認すべき項目の1つである。 content_sizeでシミュレータの設定を切り替えてからスクリーンショットを撮影すれば、実機で毎回設定を変更する手間なく確認できる。

$ xcrun simctl ui booted content_size accessibility-extra-extra-extra-large
$ xcrun simctl io booted screenshot largest-text.png

標準サイズとアクセシビリティサイズの両端で撮影しておくと、CIでのレイアウト崩れチェックやレビュー時の確認資料として使える。