SwiftUI:导航返回时如何平滑过渡bottomBar工具栏?
Posted
技术标签:
【中文标题】SwiftUI:导航返回时如何平滑过渡bottomBar工具栏?【英文标题】:SwiftUI: How to smoothly transition bottomBar toolbar when navigating back? 【发布时间】:2021-01-15 03:15:06 【问题描述】:我想在我的一个视图中有一个放置.bottomBar
的工具栏。然而,当导航离开并返回时,工具栏不会与视图的其余部分平滑过渡 - 它会突然出现,将视图的全部内容向上移动,如下所示。
这似乎只影响屏幕底部的工具栏 - 您可以看到放置在屏幕顶部的工具栏似乎工作正常。
导航回到第一个屏幕时如何让底部工具栏平滑过渡?
struct ContentView: View
var body: some View
NavigationView
NavigationLink(
destination: Text("Destination"),
label:
Text("Navigate")
)
.toolbar
ToolbarItem(placement: .bottomBar)
Text("Bottom")
ToolbarItem(placement: .principal)
Text("Top")
【问题讨论】:
【参考方案1】:我遇到了和你一样的问题,顶部工具栏很好,但底部工具栏闪烁。
我目前使用的解决方法是手动创建底部工具栏,例如:
struct ContentView: View
var body: some View
NavigationView
VStack
Spacer()
NavigationLink(
destination: Text("Destination"),
label:
Text("Navigate")
)
Spacer()
NavigationLink(
destination: Text("Destination"),
label:
ZStack
Rectangle()
.frame(height: 90.0)
.foregroundColor(.gray).opacity(0.08)
.border(Color.gray, width: 0.2)
Text("Bottom")
.foregroundColor(.black)
)
.edgesIgnoringSafeArea(.all)
.toolbar
ToolbarItem(placement: .principal)
Text("Top")
Demo link (not allowed to post images yet)
这并不理想 - 我更喜欢使用 Toolbar API,但这种方式确实会阻止内容向上移动。
【讨论】:
这也是我最终解决的问题。我想这是一个 SwiftUI 错误,希望 Apple 很快会修复它!以上是关于SwiftUI:导航返回时如何平滑过渡bottomBar工具栏?的主要内容,如果未能解决你的问题,请参考以下文章
更改导航栏“prefersLargeTitles”时的平滑过渡