0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SwiftUIのsheetとfullScreenCoverをまとめてみた

0
Posted at

はじめに

SwiftUIで別画面を表示する方法として、sheetfullScreenCover があります。
今回はモーダル表示に使う sheetfullScreenCover の違いを整理します。

sheet とは

sheet は、現在の画面の上にモーダルとして別画面を表示するためのモディファイアです。

struct ContentView: View {
    @State private var isPresented = false
    
    var body: some View {
        Button("Sheetを表示") {
            isPresented = true
        }
        .sheet(isPresented: $isPresented) {
            SheetView()
        }
    }
}

struct SheetView: View {
    var body: some View {
        Text("Sheetで表示した画面です")
    }
}
ボタン押下前 ボタン押下後

上記では「Sheetを表示」ボタンをタップすると、現在の画面の上に sheet が表示され、「Sheetで表示した画面です」というテキストが表示されます。

sheet は下方向にスワイプすることで閉じることができます。

fullScreenCover とは

fullScreenCover は、画面全体を覆う形で別画面を表示するためのモディファイアです。

struct ContentView: View {
    @State private var isPresented = false
    
    var body: some View {
        Button("FullScreenCoverを表示") {
            isPresented = true
        }
        .fullScreenCover(isPresented: $isPresented) {
            FullScreenView()
        }
    }
}

struct FullScreenView: View {
    
    var body: some View {
        Text("FullScreenCoverで表示した画面です")
    }
}
ボタン押下前 ボタン押下後

上記では「FullScreenCoverを表示」ボタンをタップすると、fullScreenCover が画面全体を覆う形で表示され、「FullScreenCoverで表示した画面です」というテキストが表示されます。

sheet とは異なり、基本的には下方向へのスワイプで閉じる前提ではないため、画面を閉じるための処理を別途用意しておくことが必要です。

画面を閉じる方法

@Environment(\.dismiss) を使うと、sheetfullScreenCover で表示した画面側から閉じることができます。

iOS 15から使用可能です。


struct FullScreenView: View {
    @Environment(\.dismiss) private var dismiss

    var body: some View {
        Button("画面を閉じる") {
            dismiss()
        }
    }
}

まとめ

今回は sheetfullScreenCover の違いを整理しました。
sheet は補助的な画面を表示したいとき、fullScreenCover は画面全体を使って表示したいときに使うと整理することで分かりやすいかと思います。
どちらもモーダル表示に使えますが、ユーザーに与える印象が異なるため、画面の役割に合わせて使い分けるのがよいと思います。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?