SwiftUI 小模态视图

标签 swiftui

我刚开始使用 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])
        }
    }
}

结果:

enter image description here

并且可以添加 .presentationDragIndicator 以使指示器可见:

.presentationDragIndicator(.visible)

结果:

enter image description here

关于SwiftUI 小模态视图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67392283/

相关文章:

swiftui - 使用为 Mac Catalyst 17 引入的dialogIcon View 修改器时出错

swiftui - 如何设置SwiftUI按钮的自定义突出显示状态

list - SwiftUI:PageTabViewStyle() 在 ScrollView 或 List 内部时新损坏?

SwiftUI 关闭模态

Swift:促销产品(使用 RevenueCat) - 缓存 defermentBlock

用于自定义 View 的 SwiftUI ViewModifier

swift - 如何使用 SwiftUI 在 macOS 上可靠地检索窗口的背景颜色?

ios - 是否可以通过捕获 QR-Code 自动连接到 WiFi?

ios - SwiftUI:将动态数据传递到内容 View 后重绘

macos - 使用 AudioKit 和 SwiftUI 的音频可视化工具