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

升级Xcode 13及iOS 15后Tab栏、Navigation栏显示异常如何解决?

问题根因

该异常是Xcode13默认适配iOS15+ SDK引入的特性导致的:iOS15后UINavigationBar和UITabBar新增了滚动边缘外观(scrollEdgeAppearance)属性,旧项目升级后没有对该属性做配置时,默认会使用透明背景,你看到的黑色实际是下层window或视图的背景色。当滚动scrollView/tableView时,内容偏移触碰到栏区域,系统会自动切换到默认不透明白色的标准外观(standardAppearance),所以滚动后栏会恢复正常,你已经配置的全局浅色模式代码和该特性不冲突,不需要修改。

修复方案

不需要逐个修改每个业务视图的配置,两种方案都可以全局一次性修复:

方案1:全局代码统一配置(推荐,改动最小)

在App启动方法application:didFinishLaunchingWithOptions:里,和你现有的浅色模式配置放在同一位置,新增以下全局外观代码即可全量生效:

if #available(iOS 13.0, *) {
    // 全局统一配置导航栏外观
    let navBarAppearance = UINavigationBarAppearance()
    navBarAppearance.configureWithOpaqueBackground()
    // 可自定义背景色、标题属性等
    navBarAppearance.backgroundColor = .white
    UINavigationBar.appearance().standardAppearance = navBarAppearance
    UINavigationBar.appearance().scrollEdgeAppearance = navBarAppearance
    
    // 全局统一配置Tab栏外观
    let tabBarAppearance = UITabBarAppearance()
    tabBarAppearance.configureWithOpaqueBackground()
    tabBarAppearance.backgroundColor = .white
    UITabBar.appearance().standardAppearance = tabBarAppearance
    UITabBar.appearance().scrollEdgeAppearance = tabBarAppearance
}

方案2:Storyboard可视化配置(无需写代码)

直接在Storyboard里全局修改控制器的栏属性即可:

  • 选中导航控制器的Navigation Bar,在右侧属性检查器找到Scroll Edge配置项,取消勾选Translucent,再将背景色设置为你需要的白色,Xcode会自动同步两种滚动状态的外观
  • 同理选中Tab Bar控制器的Tab Bar,同样取消Translucent勾选,设置背景色为白色即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:06:02