You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS 17升级后TabBar无法隐藏问题咨询

iOS 17中TabBar隐藏逻辑的变更及修复方案

变更说明

iOS 17对TabView与NavigationStack的工具栏优先级处理做了调整:

  • 在iOS 16中,外层NavigationStack上设置的.toolbar(.hidden, for: .tabBar)可以覆盖内部TabView的系统TabBar显示;
  • 但iOS 17优化了视图层级的工具栏识别逻辑,TabView的系统TabBar属于自身专属的工具栏配置,外层容器的设置不再对其生效。

修复方案

方案1:直接为TabView或其子视图设置隐藏

将.toolbar(.hidden, for: .tabBar)直接附加到TabView本身,或者其内部的每个子视图上:

struct LandingView: View {
    @State var selectedTab = 1

    var body: some View {
        ZStack(alignment: .bottom) {
            NavigationStack {
                TabView(selection: $selectedTab) {
                    CreateView()
                        .tag(1)
                        .toolbar(.hidden, for: .tabBar) // 给子视图添加隐藏配置
                    // 其他子视图同理添加该配置
                }
                .toolbar(.hidden, for: .tabBar) // 或直接给TabView添加,二选一即可
            }
            // 自定义TabBar
        }
    }
}

方案2:使用页面样式隐藏系统TabBar

如果自定义TabBar完全替代了系统交互,可以给TabView设置页面样式并隐藏指示器,彻底屏蔽系统TabBar:

TabView(selection: $selectedTab) {
    CreateView()
        .tag(1)
    // 其他子视图
}
.tabViewStyle(.page(indexDisplayMode: .never))

内容的提问来源于stack exchange,提问作者user22701962

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 05:42:09