如何在iPadOS16中设置SwiftUI Sheet宽度与屏幕同宽?
实现与屏幕宽度一致的SwiftUI Sheet(适配iPadOS16)
在iPadOS16上,默认Sheet采用窄幅的formSheet样式,仅设置presentationDetents无法改变其宽度。要实现全屏宽度的Sheet,需调整Sheet的展示样式并配合相关修饰符,具体修改如下:
修改后的代码
struct ContentView: View { @State private var showSheet = false var body: some View { Button("View Sheet") { showSheet = true } .sheet(isPresented: $showSheet) { Text("HELLO") .frame(maxWidth: .infinity, maxHeight: .infinity) .background(Color.white) } .presentationStyle(.pageSheet) .presentationDetents([.large]) .presentationCornerRadius(0) } }
关键说明
.presentationStyle(.pageSheet):将Sheet样式切换为pageSheet,该样式在iPad上会占据整个屏幕宽度,替代默认的窄幅样式。.presentationDetents([.large]):让Sheet展开至最大可用高度,配合宽度设置实现全屏级的展示效果。.presentationCornerRadius(0):可选设置,移除Sheet顶部的默认圆角,使其完全贴合屏幕边缘。- 内部视图的
.frame(maxWidth: .infinity, maxHeight: .infinity):确保Sheet内的内容填满整个Sheet区域,避免出现留白。
内容的提问来源于stack exchange,提问作者danifm1321
相关产品推荐
相关产品推荐

