我有一个SwiftUI应用程序,将会有一个浮动的播客播放器,类似于苹果音乐播放器,它位于选项卡栏上方并在所有选项卡和视图中保持存在,而播放器正在运行。我还没有找到一个好的方法来定位播放器,使其与选项卡栏紧密相连,因为选项卡栏的高度根据设备不同而变化。我发现的主要问题是如何在应用程序的根视图中的覆盖层或ZStack中定位播放器,而不是在TabView本身内部。由于我们无法自定义TabView布局的视图层次结构,因此没有办法在TabBar本身和其上面的内容之间插入一个视图。我的基本代码结构:
TabView(selection: $appState.selectedTab){
Home()
.tabItem {
VStack {
Image(systemName: "house")
Text("Home")
}
}
...
}.overlay(
VStack {
if(audioPlayer.isShowing) {
Spacer()
PlayerContainerView(player: audioPlayer.player)
.padding(.bottom, 58)
.transition(.moveAndFade)
}
})
主要问题在于PlayerContainerView的位置是硬编码的,它具有58像素的填充,以便清除TabView。如果我能检测到TabView的实际框架高度,我就可以全局调整这个值以适应给定设备,这样就可以解决了。有谁知道如何可靠地做到这一点吗?或者您是否有任何想法,如何将PlayerContainerView放置在TabView本身内部,以便在切换显示时,简单地出现在Home()视图和选项卡栏之间?感谢您的任何反馈。