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

如何解决iOS 15 Navigation Bar透明设置失效问题

你现有代码中iOS 15适配部分调用了configureWithOpaqueBackground(),该方法会将导航栏默认配置为不透明样式,是导致透明效果失效的核心原因。

修正后可生效的完整代码

override func viewDidLoad() {
    super.viewDidLoad()
    
    // iOS 15以下版本适配逻辑保持不变
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
    self.navigationController?.navigationBar.shadowImage = UIImage()
    self.navigationController?.navigationBar.isTranslucent = true

    if #available(iOS 15, *) {
        let appearance = UINavigationBarAppearance()
        // 替换为透明背景专属配置方法
        appearance.configureWithTransparentBackground()
        // 清除阴影分割线
        appearance.shadowImage = UIImage()
        appearance.backgroundImage = UIImage()
        // 仅当前页面生效的写法,不需要全局生效就不要调用UINavigationBar.appearance()
        self.navigationController?.navigationBar.standardAppearance = appearance
        self.navigationController?.navigationBar.scrollEdgeAppearance = appearance
    }
}

注意事项

  • 如果仅需要当前页面导航栏透明,不要使用UINavigationBar.appearance()做全局设置,直接赋值给当前导航控制器的导航栏属性即可,避免影响其他页面的导航栏样式
  • 必须保证isTranslucent属性为true,否则透明效果无法生效
  • 如果需要适配滚动时的导航栏样式,可根据业务需求单独调整scrollEdgeAppearance配置,不需要和standardAppearance保持一致

问题现象截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:54:02