Swiftui 如何禁用NavigationView推送和弹出动画
鉴于此简单的Swiftui 如何禁用NavigationView推送和弹出动画,swiftui,swiftui-navigationlink,swiftui-navigationview,Swiftui,Swiftui Navigationlink,Swiftui Navigationview,鉴于此简单的导航视图: struct ContentView:View{ var body:一些观点{ 导航视图{ VStack{ 导航链接(“推送我”,目的地:文本(“推送视图”)) } } } } 当目标视图被推入/弹出堆栈时,是否有人找到了禁用NavigationView动画的方法 这在iOS2.0之后的UIKit中就可以实现了!我认为对框架的要求并不过分。我在所有视图(即NavigationView容器、目标视图、NavigationLink等)上尝试了各种修改器 以下是我尝试过的一些
导航视图
:
struct ContentView:View{
var body:一些观点{
导航视图{
VStack{
导航链接(“推送我”,目的地:文本(“推送视图”))
}
}
}
}
当目标视图被推入/弹出堆栈时,是否有人找到了禁用NavigationView
动画的方法
这在iOS2.0之后的UIKit中就可以实现了!我认为对框架的要求并不过分。我在所有视图(即NavigationView
容器、目标视图、NavigationLink
等)上尝试了各种修改器
以下是我尝试过的一些修改器:
.animation(无)
.transition(.identity)
.transaction{t in t.disablesAnimations=true}
.transaction{t in t.animation=nil}
没有什么不同。我在EnvironmentValues
中也没有发现任何有用的内容:-(
我是缺少了一些非常明显的东西,还是功能还没有实现?Xcode 11.3: 现在没有任何修改器可以禁用
NavigationView
动画
您可以使用structinit()
禁用动画,如下所示:
struct ContentView : View {
init(){
UINavigationBar.setAnimationsEnabled(false)
}
var body: some View {
NavigationView {
VStack {
NavigationLink("Push Me", destination: Text("PUSHED VIEW"))
}
}
}
}
我最近创建了一个名为
swiftui导航堆栈()其中包含NavigationStackView
,该视图模仿标准NavigationView
的导航行为,添加了一些有用的功能。例如,您可以使用NavigationStackView
并根据Kontiki在问题中的请求禁用过渡动画。当您创建导航时nStackView
只需将.none
指定为transitionType
:
struct ContentView : View {
var body: some View {
NavigationStackView(transitionType: .none) {
ZStack {
Color.yellow.edgesIgnoringSafeArea(.all)
PushView(destination: View2()) {
Text("PUSH")
}
}
}
}
}
struct View2: View {
var body: some View {
ZStack {
Color.green.edgesIgnoringSafeArea(.all)
PopView {
Text("POP")
}
}
}
}
PushView
和PopView
是两个视图,允许您推送和弹出视图(类似于SwiftUINavigationLink
)。以下是完整的示例:
import SwiftUI
import NavigationStack
struct ContentView : View {
var body: some View {
NavigationStackView(transitionType: .none) {
ZStack {
Color.yellow.edgesIgnoringSafeArea(.all)
PushView(destination: View2()) {
Text("PUSH")
}
}
}
}
}
struct View2: View {
var body: some View {
ZStack {
Color.green.edgesIgnoringSafeArea(.all)
PopView {
Text("POP")
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
结果是:
如果你们能和我一起改进这个开源项目,那就太好了