Xcode11からiOSシミュレータのステータスバーをコマンドで自由に変更できるようになった。
時刻、バッテリー、ネットワーク表示など結構色々変えれるみたいなので実行コマンドと結果をまとめておく。
- 動作環境
- 時刻を変更する
- 設定を元に戻したい時
- ネットワーク表示を変更する
- Wifiの状態を変更する
- Wifiの強度を変更する
- 携帯回線の表示を変更する
- 携帯回線の強度を変更する
- 携帯回線のキャリア名を変更する
- バッテリー状態を変更する
- バッテリーの充電率を変更する
- 終わり
動作環境
- Xcode 11.4
時刻を変更する
シミュレータのスクリーンショットを取りたいときなどに、時刻を好きな値で固定したいことがある。
例えば9:41に時刻を固定したい場合は下記のコマンドをTerminalで実行する。
$ xcrun simctl status_bar "iPhone 11 Pro" override --time "9:41"

シミュレータ名はXcodeに表示されているものをそのまま打ち込めばOK。

もしくはコマンドでも取得できるので、それをコピペしてもOK。
$ xcrun simctl list | grep Booted

ちなみに時刻には日本語も設定することができる。
$ xcrun simctl status_bar "iPhone 11 Pro" override --time "日本語もOK"
設定を元に戻したい時
デフォルトに戻したいときは下記コマンドで戻せる
$ xcrun simctl status_bar "iPhone 11 Pro" clear
ネットワーク表示を変更する
設定できるのは'wifi', '3g', '4g', 'lte', 'lte-a', 'lte+'の6種類
# ネットワークアイコンを4gに変更する $ xcrun simctl status_bar "iPhone 11 Pro" override --dataNetwork "4g"

マニュアルにはlte-a, lte+も設定できると書いてあるが、自分の環境だとアイコンが「?」になってしまった。
Wifiの状態を変更する
設定できるのは'searching', 'failed', 'active'の3種類。
$ xcrun simctl status_bar "iPhone 11 Pro" override --wifiMode "failed"

searchingは設定しても特に変化はなかった。
Wifiの強度を変更する
設定できるのは0~3。
$ xcrun simctl status_bar "iPhone 11 Pro" override --wifiBars 1

携帯回線の表示を変更する
設定できるのは'notSupported', 'searching', 'failed','active'の4種類。
$ xcrun simctl status_bar "iPhone 11 Pro" override --cellularMode "active"

携帯回線の強度を変更する
設定できるのは0~4。
$ xcrun simctl status_bar "iPhone 11 Pro" override --cellularBars 2

携帯回線のキャリア名を変更する
これはiPhone8までが対象。iPhone10からはステータスバーのレイアウト変更でキャリア名が表示されなくなってしまっているため、変更しても何も起きない。
# --cellularMode activeも同時につけてあげないと変更されないので注意 $ xcrun simctl status_bar "iPhone 8" override override --operatorName '自由' --cellularMode active

バッテリー状態を変更する
設定できるのは'charging', 'charged', 'discharging'の3種類。
$ xcrun simctl status_bar "iPhone 11 Pro" override --batteryState "charging"

バッテリーの充電率を変更する
設定できるのは0-100。
$ xcrun simctl status_bar "iPhone 11 Pro" override --batteryLevel 50

終わり
ここで紹介したものは全てxcrun simctl help status_barを実行すれば見れる。
あとAppleのリリースノートにもシミュレータについて色々書かれているので一度目を通しておくのはアリ。