嵌套选项卡视图-删除内部选项卡栏iOS 13,Swift UI
我使用嵌套选项卡视图-删除内部选项卡栏iOS 13,Swift UI,swift,swiftui,swiftui-tabview,Swift,Swiftui,Swiftui Tabview,我使用选项卡视图来表示三个选项卡。在iOS 14中,这一点处理得很好,但iOS 13会产生一个灰色的底部栏,它是用于导航的选项卡栏。我如何才能移除此栏 请记住,这是选项卡视图中的选项卡视图。外部选项卡视图的栏显示在底部,有五个选项卡;内部选项卡视图栏我根本不想显示 下面的代码表示内部选项卡视图 import SwiftUI struct DashboardView: View { @State private var pageIndex = 1 var body: s
选项卡视图
来表示三个选项卡。在iOS 14中,这一点处理得很好,但iOS 13会产生一个灰色的底部栏,它是用于导航的选项卡栏。我如何才能移除此栏
请记住,这是选项卡视图中的选项卡视图
。外部选项卡视图
的栏显示在底部,有五个选项卡;内部选项卡视图
栏我根本不想显示
下面的代码表示内部选项卡视图
import SwiftUI
struct DashboardView: View {
@State private var pageIndex = 1
var body: some View {
VStack {
DashboardTopBar(index: $pageIndex) // A custom selected tab indicator
if #available(iOS 14.0, *) {
TabView(selection: $pageIndex) {
RehabView().tag(0)
PerformanceView().tag(1)
RecoveryView().tag(2)
}
.tabViewStyle(PageTabViewStyle())
.indexViewStyle(PageIndexViewStyle(backgroundDisplayMode: .always))
} else {
TabView(selection: $pageIndex) {
RehabView().tag(0)
PerformanceView().tag(1)
RecoveryView().tag(2)
}
}
}
}
}
下图显示iOS 13位于左侧,iOS 14位于右侧
最小、完整且可验证的示例
如果下面的代码是在iOS 13上启动的,您会注意到底部有一个选项卡栏,顶部有一个空选项卡栏
import SwiftUI
struct ContentView: View {
@State private var outerTabViewSelectedTab = 0
@State private var innerTabViewSelectedTab = 1
var body: some View {
TabView(selection: $outerTabViewSelectedTab,
content: {
Text("Outer 1").tabItem { Text("Outer 1") }.tag(1)
TabView(selection: $innerTabViewSelectedTab,
content: {
Text("Inner 1").tag(1)
Text("Inner 2").tag(2)
}).tabItem { Text("Outer 2") }.tag(2)
})
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
显式隐藏它。。。因为向后兼容性是安全的,因为行为是已知的,不会改变
所以这里有一个解决方案
var body: some View {
TabView(selection: $outerTabViewSelectedTab,
content: {
Text("Outer 1").tabItem { Text("Outer 1") }.tag(1)
TabView(selection: $innerTabViewSelectedTab,
content: {
Text("Inner 1").tag(1)
.background(TabBarAccessor { tabBar in
tabBar.isHidden = true
})
Text("Inner 2").tag(2)
}).tabItem { Text("Outer 2") }.tag(2)
})
}
从我的另一个解决方案中使用了TabBarAccessor
。indexViewStyle(PageIndexViewStyle(backgroundDisplayMode:.no))@Dc7不幸的是,。indexViewStyle
和PageIndexViewStyle
仅在iOS 14中可用。我特别寻找iOS 13。我想,你必须用UIViewRepresentable创建它!!!这回答了你的问题吗?@Asperi没有,对不起。我尝试了半透明的true
和false
两个值,但该条仍然保留。其他选项卡包含列表视图,并且栏与项目重叠。太棒了!当然,对于那些好奇的人来说,.background
修饰符需要应用于所有希望隐藏选项卡栏的选项卡。谢谢