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

Xcode 13中SwiftUI TabView透明度异常,如何恢复旧版本显示样式?

解决Xcode 13编译后SwiftUI TabView半透明问题

该问题本质是iOS 15 SDK对UITabBar的默认外观做了调整,Xcode 13默认使用iOS 15 SDK编译项目,因此触发了半透明效果,要恢复旧版本的不透明样式,可以按以下方案修改:

  • 兼容iOS 15+的通用方案
    通过全局修改UITabBar的外观实现,需要在App入口的初始化方法中添加如下代码:
init() {
    if #available(iOS 15.0, *) {
        let tabBarAppearance = UITabBarAppearance()
        // 配置为不透明背景
        tabBarAppearance.configureWithOpaqueBackground()
        // 替换为你项目中TabBar需要的背景色
        tabBarAppearance.backgroundColor = .white
        // 同时设置普通状态和滚动边缘状态的外观,避免滚动时样式变化
        UITabBar.appearance().standardAppearance = tabBarAppearance
        UITabBar.appearance().scrollEdgeAppearance = tabBarAppearance
    }
}

如果是用UIKit的AppDelegate,可以把上述代码放到application(_:didFinishLaunchingWithOptions:)方法中。

  • iOS 16+ 专属SwiftUI原生方案
    如果你的项目最低支持版本为iOS 16,可以直接使用SwiftUI提供的原生修饰符,无需调用UIKit接口:
TabView {
    // 各Tab页的内容代码
}
.toolbarBackground(.visible, for: .tabBar)
// 替换为你需要的TabBar背景色
.toolbarBackground(.white, for: .tabBar)

注意:如果需要自定义TabBar的阴影、选中/未选中文字颜色等属性,都可以在对应的Appearance对象或者修饰符中添加配置即可。

内容的提问来源于stack exchange,提问作者M. Montgomery

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:54:06