我刚开始使用 SwiftUI,但遇到了问题。
我有一个主视图加载模态视图,在 iPhone 上它会全屏显示,iPad 默认情况下会覆盖部分屏幕。
下面的代码似乎执行“默认”加载居中但不是全屏的 View 。 我最希望的是能够缩小模型 View 。这是一个登录屏幕,用户可以在其中输入登录详细信息。
使用 Storyboard,我可以通过“preferredcontentsize”来实现这一点,但 SwiftUI 比较似乎不起作用。
struct Login_View: View {
@State private var showingSheet = false
var body: some View {
Button("Show Alert") {
showingSheet = !showingSheet
}
.sheet(isPresented:$showingSheet) {
Credentials_View()
}
}
}
(下面是模态视图,atm 它只显示一些颜色,而我正在处理正在发生的事情)
struct Credentials_View: View {
var body: some View {
GeometryReader { metrics in
VStack(spacing: 0) {
Color.red.frame(height: metrics.size.height * 0.43)
Color.green.frame(height: metrics.size.height * 0.37)
Color.yellow
}
}
}
}
最佳答案
IOS 16+
从 iOS 16 开始,可以使用 .sheet 创建半张纸,其中显示的 View (示例 Credentials_View)将 .presentationDetents 设置为 .medium。
struct Login_View: View {
@State private var showingSheet = false
var body: some View {
Button("Show Alert") {
showingSheet = !showingSheet
}
.sheet(isPresented:$showingSheet) {
Credentials_View()
.presentationDetents([.medium])
}
}
}
结果:
并且可以添加 .presentationDragIndicator 以使指示器可见:
.presentationDragIndicator(.visible)
结果:
关于SwiftUI 小模态视图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67392283/