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

SwiftUI中Sheet动态调整高度时无动画过渡的问题求助

SwiftUI中Sheet动态调整高度时无动画过渡的问题求助

大家好,我最近在SwiftUI开发中遇到了一个头疼的问题,想请教下各位前辈。我把NavigationStack以Sheet的形式展示,想要在Sheet内部跳转页面时动态调整它的高度。目前我用了一个全局的可观察变量来管理高度值,逻辑上都能正常触发高度变化,但就是高度切换的时候完全没有动画,直接从一个高度突兀地跳到另一个,体验特别差。

下面是能复现这个问题的代码:

#Preview {
    @Previewable @State var height: CGFloat = 200
    Text("Parent View")
        .sheet(isPresented: .constant(true)) {
            NavigationStack {
                Form {
                    NavigationLink("Button") {
                        RoundedRectangle(cornerRadius: 20)
                            .fill(Color.blue)
                            .frame(height: 200)
                            .navigationTitle("Child")
                            .onAppear {
                                withAnimation {
                                    height = 300
                                }
                            }
                    }
                }
                .navigationTitle("Parent")
                .navigationBarTitleDisplayMode(.inline)
                .presentationDetents([.height(height)])
                .onAppear {
                    withAnimation {
                        height = 150
                    }
                }
        }
}

我尝试用withAnimation包裹高度的修改操作,但不管是Sheet刚出现时的高度调整,还是跳转到子页面后的高度变化,都没有出现预期的平滑过渡动画,完全是生硬切换。有没有朋友知道该怎么调整,才能让Sheet的高度变化有自然的动画效果呀?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 11:03:00