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

如何在iOS 16中用SwiftUI实现无半透明的透明导航栏?

解决iOS 16 SwiftUI导航栏完全透明且保持深色配色的问题

你当前的代码里,.toolbarBackground(.clear, for: .navigationBar)虽然设置了透明背景,但系统默认的导航栏半透明模糊层还在生效。要实现完全透明同时保留深色配色(标题/状态栏为白色),只需调整几个修饰符:

  • 移除.toolbarBackground(.visible, for: .navigationBar),这个修饰符会强制显示系统默认的半透明背景层
  • 保留.toolbarBackground(.clear, for: .navigationBar)确保背景完全透明
  • 用.toolbarColorScheme(.dark, for: .navigationBar)维持深色配色
  • 添加.toolbarShadow(.hidden, for: .navigationBar)移除导航栏默认的阴影线

修改后的完整代码:

struct ContentView: View {
    var body: some View {
        NavigationStack {
            Rectangle()
                .fill(.red)
                .frame(width: 200)
                .edgesIgnoringSafeArea(.top)
                .navigationTitle("Hello")
                .navigationBarTitleDisplayMode(.inline)
                // 调整后的导航栏修饰符
                .toolbarBackground(.clear, for: .navigationBar)
                .toolbarColorScheme(.dark, for: .navigationBar)
                .toolbarShadow(.hidden, for: .navigationBar)
        }
    }
}

这样设置后,导航栏会完全透明,标题和状态栏保持白色的深色样式,不会有半透明模糊效果,页面内容也能正常延伸到导航栏下方。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:24:47