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

