You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让SwiftUI中弹出的Converter视图全屏显示?

解决SwiftUI Sheet无法全屏显示Converter视图的问题

你的问题出在默认Sheet有固定的呈现尺寸限制,直接给Converter()添加frame或edgesIgnoringSafeArea无法突破这个限制,以下是两种可行的解决方法:

方法一:使用全屏覆盖视图(最直接)

用fullScreenCover替代sheet,它本身就是为全屏展示设计的:

修改DemoHome中的sheet代码:

.fullScreenCover(isPresented: $converterSheetVisible) {
    Converter()
        .edgesIgnoringSafeArea(.all)
}

替换后点击按钮会直接全屏打开Converter视图,无需额外调整。

方法二:自定义Sheet的呈现参数(保留Sheet拖拽特性)

如果需要保留Sheet可拖拽关闭的特性,可以通过设置presentationDetents让Sheet全屏显示:

修改DemoHome中的sheet代码:

.sheet(isPresented: $converterSheetVisible) {
    Converter()
        .edgesIgnoringSafeArea(.all)
}
.presentationDetents([.full])
.presentationDragIndicator(.hidden)
  • presentationDetents([.full]):将Sheet的高度设置为屏幕全屏
  • presentationDragIndicator(.hidden):隐藏顶部的拖拽指示器(可选,根据需求决定)

修改后的完整DemoHome代码参考

@ViewBuilder
func DemoHome()->some View{
    VStack {
        NavigationView {
            NavigationStack{
                Button("Enter"){
                    print("clicked")
                    self.converterSheetVisible.toggle()
                }
            }
            .navigationTitle("Authenticated Account").font(.system(size: 15, weight: .regular))
            .toolbar {
                ToolbarItem{
                    Button("Logout"){
                        try? Auth.auth().signOut()
                        withAnimation(.easeInOut){
                            logStatus = false
                        }
                    }
                }
            }
        }
        // 这里替换为上面的任一方案代码
        .fullScreenCover(isPresented: $converterSheetVisible) {
            Converter()
                .edgesIgnoringSafeArea(.all)
        }
    }
}

内容的提问来源于stack exchange,提问作者Alexandros Eghoyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 20:02:23