如何更改 SwiftUI 中所选选项卡栏项目的图标颜色?

问题描述 投票:0回答:3

我尝试使用 UITabBar.appearance().unselectedItemTintColor 更改图标的颜色,但它仅适用于 systemImage 并且不突出显示图像,仅突出显示文本。

init() {
   UITabBar.appearance().unselectedItemTintColor = .secondaryLabel 
}

TabView {
        FirstView()
            .tabItem {
                Text("Home")
                Image("home")
            }
            
        CatalogView()
            .tabItem {
                
                Text("Categories")
                Image("catalog")
                    
            }
        
        CustomerProfileView()
            .tabItem {
                Text("Profile")
                Image("profile")
            }
           
            
        ShoppingView()
            .tabItem {
                Text("Cart")
                Image("shoppingbasket")
            }  
    }

我也尝试过 .accentColor 但 Xcode 说它将被弃用。

swiftui uitabbarcontroller
3个回答
4
投票

在这种情况下您可以使用

foregroundColor

Image("shoppingbasket")
    .renderingMode(.template)
    .foregroundColor(Color(.secondaryLabel))

2
投票

你的代码运行得很好。

init() {
   UITabBar.appearance().unselectedItemTintColor = .secondaryLabel 
}

但是您还需要在资源目录中将您的资源设置为模板图像:

Template Image selection in Xcode

所以不需要使用.foregroundColor


0
投票

您是否尝试过将 .tint() 修饰符应用于 TabView?

就像这样:

TabView {
        FirstView()
            .tabItem {
                Text("Home")
                Image("home")
            }
            
        CatalogView()
            .tabItem {
                
                Text("Categories")
                Image("catalog")
                    
            }
        
        CustomerProfileView()
            .tabItem {
                Text("Profile")
                Image("profile")
            }
           
            
        ShoppingView()
            .tabItem {
                Text("Cart")
                Image("shoppingbasket")
            }  
    }
    .tint(.green)
© www.soinside.com 2019 - 2024. All rights reserved.