.edgesIgnoringSafeArea(.all)
を使えない(使いたくない)Viewで 全画面表示したいときに↓のようにすると、
struct ContentView: View { var body: some View { ZStack() { Color.blue Text("Hello, World!") } .frame(width: UIScreen.main.bounds.width) .frame(height: UIScreen.main.bounds.height) } }
↓のように上の方に少し隙間が開きます。
これは、元々↓のようなViewのサイズだけを全画面サイズにしているので、上下のSafeAreaの差の分だけずれている状態です。
解決するには上下のSafeAreaの差の分だけずらしてやればよいです。
struct ContentView: View { let safeAreaInsets: UIEdgeInsets = UIApplication.shared.windows.first?.safeAreaInsets ?? .zero var body: some View { ZStack() { Color.blue Text("Hello, World!") } .frame(width: UIScreen.main.bounds.width) .frame(height: UIScreen.main.bounds.height) .offset(y: (safeAreaInsets.bottom - safeAreaInsets.top) / 2) } }
もちろん、.edgesIgnoringSafeArea(.all)
を使うのが一番良いと思います。