如何让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
相关产品推荐
相关产品推荐

