Fastlaneで撮ったスクリーンショットに対して行う編集を自動化するために、機種ごとのStatusバーのサイズを測ったのでメモ
測り方
UIApplication.shared.statusBarFrameを使って測ろうとしたら、iOS13からは、deprecatedでした。
マルチウィンドウ対応で、deprecatedなのでした。
代わりに使うべきなのは、statusBarManagerで、それは、window sceneに紐づいてます。
ちょっと、手続きが必要で、
UIScene取得
let windowScene = UIApplication.shared.connectedScenes.map({$0 as? UIWindowScene}).compactMap({$0}).first!
上記で取れるのは、UIWindowSceneになので、そこから、statusBarManagerを確認することとなります。
コード
print("\(windowScene.statusBarManager?.statusBarFrame)")
例えば、6sPlusでは、以下のように表示されます。
Optional((0.0, 0.0, 320.0, 20.0))
測定結果
スクリーンショット作成に必須な機種について確認しました。(Portlaitモードのみです)
- iPhone6s
- 320 x 20
- iPhone XsMax
- 320 x 20
- iPadPro 12.9inch Gen2
- 768 x 20
- iPadPro 12.9inch Gen3
- 768 x 20
どの機種も幅は違いますが、高さは同じでした
注意点
プログラム上は、上記の数値で良いのですが、実デバイスでの表示サイズは異なります。
- iPhone6s
- 1242 x 60
- iPhone XsMax
- 1242 x 130
- iPadPro 12.9inch Gen2
- 2048 x 40
- iPadPro 12.9inch Gen3
- 2048 x 40
意味がさっぱり・・・
いずれにしても、スクリーンショットを加工するときだけ、気をつけないといけません。
Sponsor Link