如何在SwiftUI中设置navigationBarHidden动画? struct ContentView:View{ @状态变量hideNavigationBar:Bool=false var body:一些观点{ 导航视图{ 滚动视图{ VStack{ 矩形().填充(颜色.红色).边框(高度:50) .ONTAPPORATE(计数:1,执行:{ 动画片{ self.hideNavigationBar.toggle() } }) VStack{ ForEach(1..
您可以尝试使用如何在SwiftUI中设置navigationBarHidden动画? struct ContentView:View{ @状态变量hideNavigationBar:Bool=false var body:一些观点{ 导航视图{ 滚动视图{ VStack{ 矩形().填充(颜色.红色).边框(高度:50) .ONTAPPORATE(计数:1,执行:{ 动画片{ self.hideNavigationBar.toggle() } }) VStack{ ForEach(1..,swift,swiftui,hidden,navigationbar,Swift,Swiftui,Hidden,Navigationbar,您可以尝试使用 .navigationBarHidden(hideNavigationBar)。动画(.linear(持续时间:0.5))而不是。navigationBarHidden(hideNavigationBar) 还可以将self.hideNavigationBar.toggle()移出动画块。如果您使用上述方法隐藏带有动画的导航栏,则不需要这样做。我仍在学习SwiftUI中的动画,但在此阶段,我理解您必须为父视图设置动画 所以你的代码会变成 struct ContentView: V
.navigationBarHidden(hideNavigationBar)。动画(.linear(持续时间:0.5))
而不是。navigationBarHidden(hideNavigationBar)
还可以将self.hideNavigationBar.toggle()移出动画块。如果您使用上述方法隐藏带有动画的导航栏,则不需要这样做。我仍在学习SwiftUI中的动画,但在此阶段,我理解您必须为父视图设置动画 所以你的代码会变成
struct ContentView: View {
@State var hideNavigationBar: Bool = false
var body: some View {
NavigationView {
ScrollView {
VStack {
Rectangle().fill(Color.red).frame(height: 50)
.onTapGesture(count: 1, perform: {
withAnimation {
self.hideNavigationBar.toggle()
}
})
VStack {
ForEach(1..<50) { index in
HStack {
Text("Sample Text")
Spacer()
}
}
}
}
}
.navigationBarTitle("Browse")
.navigationBarHidden(hideNavigationBar)
}
}
}
.onTapGesture(count: 1, perform: {
self.hideNavigationBar.toggle()
})
可以成为
struct ContentView: View {
@State var hideNavigationBar: Bool = false
var body: some View {
NavigationView {
ScrollView {
VStack {
Rectangle().fill(Color.red).frame(height: 50)
.onTapGesture(count: 1, perform: {
withAnimation {
self.hideNavigationBar.toggle()
}
})
VStack {
ForEach(1..<50) { index in
HStack {
Text("Sample Text")
Spacer()
}
}
}
}
}
.navigationBarTitle("Browse")
.navigationBarHidden(hideNavigationBar)
}
}
}
.onTapGesture(count: 1, perform: {
self.hideNavigationBar.toggle()
})
简而言之,语法更简单。我认为,唯一的解决方案是在SwiftUI 2中使用position函数
.onTapGesture(count: 1) {
self.hideNavigationBar.toggle()
}
我仍在学习SwiftUI中的动画…此时此刻,我明白我们必须为父视图设置动画。您是否尝试过将
.animate()
视图修改器应用于滚动视图
?(我建议将其放置在导航栏隐藏(hideNavigationBar)下方)
Hey Andrew,你是否在xCode中尝试过你的代码,因为我复制并粘贴了它,但是这种快速的行为仍然存在。@现在你提到了它,请注意……我实际上还没有能够为导航栏设置动画。这是一个常见的问题。我会做更多的研究并更新我的答案-这仍然是我的iOS 14目标中的一个问题……很薄g我已经成功地完成了,并且可以建议,虽然这不是一个解决方案,但是可以在导航栏周围设置元素动画。这会将用户的注意力从导航栏移开。谢谢你的输入。我将它提交给了苹果反馈,你永远不会知道。嘿,安德鲁,你有没有在xCode中尝试你的代码,因为我像你说的那样将行更改为动画,但是我当按下红色矩形时,t仍然显示快速的行为。我确实尝试了代码,它对我来说工作正常。您使用的是什么版本的Xcode。我检查了Xcode 12,不知为什么我需要重新启动。我会将其标记为答案。