SwiftUI 使う時参考「.actionSheet」「.alert」「.sheet」「.fullScreenCover」「.popover」
コード
ContentView.swift
import SwiftUI
struct ContentView: View {
@State var onSheet = false
@State var onFullScreenCover = false
@State var onPopover = false
@State var onAlert = false
@State var onActionSheet = false
var body: some View {
VStack {
Button(action: {
self.onActionSheet = true
}, label: {
Text(".actionSheet")
})
.font(.largeTitle)
.padding(8.0)
.actionSheet(isPresented: self.$onActionSheet, content: {
ActionSheet(title: Text("Action Sheet"), message: Text("Action Sheet Message"), buttons: [
.default(Text("Default"), action: {}),
.destructive(Text("Desturctive"), action: {}),
.cancel(Text("Cancel"), action: {})
])
})
Button(action: {
self.onAlert = true
}, label: {
Text(".alert")
})
.font(.largeTitle)
.padding(8.0)
.alert(isPresented: self.$onAlert, content: {
Alert(title: Text("Alert"), message: Text("Alert Message"), dismissButton: .none)
})
Button(action: {
self.onSheet = true
}, label: {
Text(".sheet")
})
.font(.largeTitle)
.padding(8.0)
.sheet(isPresented: self.$onSheet, onDismiss: {}, content: {
AdditionalView()
})
Button(action: {
self.onFullScreenCover = true
}, label: {
Text(".fullScreenCover")
})
.font(.largeTitle)
.padding(8.0)
.fullScreenCover(isPresented: self.$onFullScreenCover, onDismiss: {}, content: {
AdditionalView()
})
Button(action: {
self.onPopover = true
}, label: {
Text(".popover")
})
.font(.largeTitle)
.padding(8.0)
.popover(isPresented: self.$onPopover, attachmentAnchor: .point(UnitPoint.center), arrowEdge: .top, content: {
AdditionalView()
})
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
AdditionalView.swift
import SwiftUI
struct AdditionalView: View {
@Environment(\.presentationMode) var presentationMode
var body: some View {
GeometryReader() { geometry in
ZStack {
Rectangle()
.foregroundColor(.red)
Button(action: {
self.presentationMode.wrappedValue.dismiss()
}, label: {
Image(systemName: "xmark.circle")
.font(.custom("system", size: 96))
})
}
}
}
}
struct AdditionalView_Previews: PreviewProvider {
static var previews: some View {
AdditionalView()
}
}

.actionSheet

iPadは「Cancel」は表示されません。
.alert

.sheet

.fullScreenCover

.popover

iPhoneだと.sheetみたいな表示になりますが、スワイプダウンでクローズすると、閉じるのですがアクションが少しおかしい。

iPadでは表示されます。






