有没有办法为自定义之间NavigationItem的过渡添加动画,AnyView如本文所述?
我喜欢这个NavigationStack系统的一切,除了不能添加任何动画过渡。
我理解这个问题有型擦除做some Views的AnyView,如在这个答案,这Group似乎是动画自定义视图导航一个更好的选择。
与其使用 AnyView 和类型擦除,我更喜欢将条件逻辑封装在 Group 视图中。然后您返回的类型是 Group,它将正确地设置动画。
我已经没有想法了,我需要一些帮助。
我将添加我的上下文代码。
场景委托:
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
...
let contentView = ContentView().environmentObject(UserData())
...
}
Run Code Online (Sandbox Code Playgroud)
内容视图:
struct ContentView: View {
@EnvironmentObject var userData: UserData
var body: some View {
NavigationHost()
.environmentObject(NavigationStack(
NavigationItem(view: AnyView(
(userData.isSignedIn ? AnyView(HomeView()) : AnyView(RegisterView1(profile: Profile.default)) )
.transition(.move(edge: .trailing))
.animation(Animation.linear(duration: 1))))))
//this animation works for some reason, but only this one. …Run Code Online (Sandbox Code Playgroud)