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
相关产品推荐
相关产品推荐

