困ったこと
iPhone 16 Proで実機確認しながら開発していたら、どうしても上下の余白が消せなくて困った。
トップレベルで、試してみたけど、結局余白ができている。
なんで?
@main
struct ambyApp: App {
var body: some Scene {
WindowGroup {
GeometryReader { geo in
Rectangle()
.fill(Color.green)
.frame(width: geo.size.width, height: geo.size.height)
}
.ignoresSafeArea(.all)
}
}
}
LaunchScreenの設定したら解決した
TargetのGeneralで設定します。(いくつか方法はあるみたいですが)

LaunchScreenと入力して再度デバッグビルドしたら解決しました。

原因
iOSがアプリを「互換モード」で動作させているため。
プロジェクト内に有効な Launch Screen(起動画面) の設定がない場合、iOSはそのアプリが最新デバイスの解像度に対応していないと判断し、古いアスペクト比で描画してしまう。
参考ソース:
-
Apple Developer Documentation(UILaunchScreen)
UILaunchScreenキーをInfo.plistに含めることで、システムに対して最新デバイスの全解像度対応を宣言することになる。
所感
今回のアプリはマイクを使う必要があったので、いきなり実機で開発始めてたのがハマった原因ですね。
XCode周りはこういうのありますね。
コードの問題ではなく、ビルド周りの問題だと早めに切り分けるのが大事ですね。
最近はClaudeに頼りっきりでしたが、たまにはこうやって自分でプロト対位ピングするのも大事ですね。(Claudeトークン節約したいだけ...)
