SwiftUI隐藏导航栏
SwiftUI隐藏导航栏

SwiftUI隐藏导航栏

.navigationBarHidden(true) 是 SwiftUI 里一个旧式修饰符,用来隐藏当前视图的导航栏(Navigation Bar)。

基本用法

NavigationView {
    Text("内容")
        .navigationTitle("首页")
        .navigationBarHidden(true)
}

效果:虽然设置了标题,但导航栏整个会被隐藏掉,页面上只剩下纯内容。

历史背景

1、.navigationBarHidden(true)

这是UIKit 时代(UINavigationController)留下来的修饰符,SwiftUI 早期也沿用了。

作用:隐藏整个 Navigation Bar(导航栏),也就是包括标题 (navigationTitle)、返回按钮、工具栏按钮等,整条导航栏都会消失。

缺点:这是 UIKit 的桥接 API,在 iOS 16+ 中已经不推荐使用,Apple 建议用 .toolbar(.hidden, for: .navigationBar) 来替代。

2、.toolbar(.hidden, for: .navigationBar)

这是 SwiftUI 原生的控制导航栏可见性的方式。

作用:同样是隐藏整个 Navigation Bar,效果和 .navigationBarHidden(true) 基本一样。

优点:这是推荐写法,API 更清晰,能明确指定要隐藏的是 .navigationBar。

新推荐的替代方式

在 NavigationStack 下,如果要隐藏标题/导航栏,用 .toolbar 配合 .hidden() 更合适:

NavigationStack {
    Text("内容")
        .toolbar(.hidden, for: .navigationBar)
}

这样写的好处:

更明确地告诉系统“隐藏的是 navigationBar”,而不是全局模糊隐藏。

还能更细粒度地控制:

.toolbar(.hidden, for: .tabBar / .bottomBar / .navigationBar)

可以针对不同的系统栏位隐藏。

注意事项

1、不要混用

在 NavigationStack 里再写 .navigationBarHidden(true) 可能不会生效,或者出现警告。

2、和全屏视图搭配

如果做登录页、欢迎页,不想要导航栏,推荐直接用 .toolbar(.hidden, for: .navigationBar),更干净。

3、影响返回手势

隐藏导航栏后,系统返回手势(左滑返回)仍然可用,但用户可能会不知所措,因为看不到返回按钮。要考虑用户体验。

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注