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

发布于 2025-01-11 09:03:32 字数 858 浏览 2 评论 0原文

我尝试使用 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 说它将被弃用。

I tried to change icon's color with UITabBar.appearance().unselectedItemTintColor but it works only with systemImage and doesn't highlight image, only text.

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")
            }  
    }

I also tried .accentColor but Xcode says it will be deprecated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

芯好空 2025-01-18 09:03:32

在这种情况下,您可以使用foregroundColor

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

You can use foregroundColor in this case.

Image("shoppingbasket")
    .renderingMode(.template)
    .foregroundColor(Color(.secondaryLabel))
流心雨 2025-01-18 09:03:32

你的代码工作得很好。

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

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

Xcode 中的模板图像选择

所以不需要使用 .foregroundColor

Your code works just fine.

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

But you also need to set your asset as a template image in the asset catalog:

Template Image selection in Xcode

So no need to use .foregroundColor

南街女流氓 2025-01-18 09:03:32

您是否尝试过将 .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)

Have you tried applying .tint() modifier to the TabView?

Just like this:

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)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文