如何在iOS 15中以模态方式呈现半屏视图?
iOS 15 实现半屏模态视图的正确方法
直接修改视图的frame(height:)对sheet模态无效,因为sheet的容器高度由系统的呈现控制器控制,iOS 15开始提供了官方的方式来指定模态视图的高度,具体实现方法如下:
核心实现步骤
- 使用
.presentationDetents()修饰器指定模态视图的可用高度,系统预定义了.medium(半屏高度)和.large(全屏高度)两种选项,也支持自定义具体高度。 - 可选添加
.presentationDragIndicator(.visible)显示拖拽指示器,方便用户调整模态视图高度。
完整代码示例
struct ContentView: View { @State private var showSheet = false var body: some View { Button("打开半屏模态") { showSheet = true } .sheet(isPresented: $showSheet) { // 这里放入你的模态视图内容 VStack { Text("半屏模态视图") .font(.title) Spacer() } .padding() .background(Color(.systemBackground)) } // 指定半屏高度 .presentationDetents([.medium]) // 显示顶部拖拽指示器 .presentationDragIndicator(.visible) } }
扩展说明
- 如果需要支持半屏和全屏切换,可传入多个高度选项:
.presentationDetents([.medium, .large]) - 自定义高度可以用
.height(CGFloat),比如.presentationDetents([.height(350)])来指定固定高度
内容的提问来源于stack exchange,提问作者bobby123uk
相关产品推荐
相关产品推荐

