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

SwiftUI TabView未选中项显示填充图标:如何恢复轮廓样式?

解决SwiftUI TabView未选中图标显示为填充样式的问题

你可以通过以下两种方法解决这个问题:

方法一:为单个图标设置渲染模式

在每个Image上添加renderingMode(.original),强制系统保留图标的原始轮廓样式,避免被默认的 tint 处理修改:

var body: some View {
    TabView {
        HomeView()
            .tabItem {
                Image(systemName: "house")
                    .renderingMode(.original)
                Text("Home")
            }
        
        LibraryView()
            .tabItem {
                Image(systemName: "tv")
                    .renderingMode(.original)
                Text("Library")
            }
        
        MyStuffView()
            .tabItem {
                Image(systemName: "bookmark")
                    .renderingMode(.original)
                Text("My Stuff")
            }
    }
}

方法二:全局设置TabBar外观

如果想统一处理所有TabBar的图标样式,可以在App结构体的初始化方法中修改UITabBar的外观,强制未选中图标使用原始渲染模式:

@main
struct YourApp: App {
    init() {
        UITabBar.appearance().unselectedItemTintColor = .gray // 可选:自定义未选中图标的颜色
        UITabBar.appearance().imageRenderingMode = .alwaysOriginal
    }
    
    var body: some Scene {
        WindowGroup {
            YourTabView()
        }
    }
}

注意:确认你使用的系统图标确实是轮廓样式(比如house是轮廓,house.fill是填充),如果图标名称本身是填充样式,即使设置渲染模式也不会变成轮廓。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 01:36:02