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

如何使用SwiftUI API修改或移除导航栏(Toolbar)底部线条颜色?

SwiftUI 修改/移除导航栏底部线条并保持工具栏白色背景

方案1:移除导航栏底部线条

SwiftUI没有直接移除导航栏底部阴影线条的原生API,但可以通过配置UINavigationBarAppearance实现需求,同时保留白色工具栏背景并确保其始终可见:

struct ToolbarBackgroundColor_Previews: PreviewProvider {
    static var previews: some View {
        NavigationView {
            VStack {
                Text("导航栏底部线条已移除 ☝️")
                Spacer()
            }
            .navigationTitle("Test")
            .navigationBarTitleDisplayMode(.large)
            .background(.white)
            .toolbarBackground(.white, for: .navigationBar)
            .toolbarBackground(.visible, for: .navigationBar, .tabBar)
            .onAppear {
                let appearance = UINavigationBarAppearance()
                appearance.backgroundColor = .white // 匹配工具栏背景色
                appearance.shadowColor = .clear // 移除底部阴影线条
                UINavigationBar.appearance().standardAppearance = appearance
                UINavigationBar.appearance().scrollEdgeAppearance = appearance
            }
        }
    }
}

关键细节:

  • 通过shadowColor = .clear直接消除底部线条
  • 同步设置standardAppearance和scrollEdgeAppearance,确保页面滚动时样式保持一致
  • 保留原有的.toolbarBackground配置,保证工具栏始终显示白色背景

方案2:修改导航栏底部线条颜色

如果需要将线条改为指定颜色,只需调整shadowColor的取值即可:

struct ToolbarBackgroundColor_Previews: PreviewProvider {
    static var previews: some View {
        NavigationView {
            VStack {
                Text("导航栏底部线条已修改颜色 ☝️")
                Spacer()
            }
            .navigationTitle("Test")
            .navigationBarTitleDisplayMode(.large)
            .background(.white)
            .toolbarBackground(.white, for: .navigationBar)
            .toolbarBackground(.visible, for: .navigationBar, .tabBar)
            .onAppear {
                let appearance = UINavigationBarAppearance()
                appearance.backgroundColor = .white
                appearance.shadowColor = .red // 设置为目标线条颜色
                UINavigationBar.appearance().standardAppearance = appearance
                UINavigationBar.appearance().scrollEdgeAppearance = appearance
            }
        }
    }
}

关键细节:

  • shadowColor支持所有UIColor/SwiftUI Color(SwiftUI颜色可通过.uiColor转换)
  • 同样需要同步两种Appearance,避免滚动时样式出现断层

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:21:00