Viewを全画面表示する(SafeAreaにも表示する)

2021年03月09日

ローディング画面などアプリ全体にViewを表示したい事があります。

Viewを画面全体に表示した場合

全画面に表示する方法

以下のような画像の上に「Now Loading...」と全画面の背景を表示するローディング画面を用意してみます

import SwiftUI

struct ContentView: View {
    var body: some View {
        ZStack {
            Image("city")
                .resizable()
                .frame(width: 240, height: 240)
            LoadingView()
        }
    }
}

struct LoadingView: View {
    var body: some View {
        VStack {
            Text("Now Loading...")
                .fontWeight(.bold)
                .foregroundColor(.white)
                .font(.title)
        }
        .frame(maxWidth: .infinity, maxHeight: .infinity)
        .background(Color.orange.opacity(0.6))
    }
}



すると結果はステータスバーなどの SafeArea にローディング部分が表示されません。

SafeAreaの部分にViewが表示されない




これを解決するには edgesIgnoringSafeArea() を使用します。

@inlinable public func edgesIgnoringSafeArea(_ edges: Edge.Set) -> some View
struct ContentView: View {
    var body: some View {
        ZStack {
            Image("city")
                .resizable()
                .frame(width: 240, height: 240)
            LoadingView()
                .edgesIgnoringSafeArea(.all)
        }
    }
}




これで全画面表示が出来ます。

edgesIgnoringSafeAreaを使う事で全画面にViewが表示される

おすすめ