由于 .accentColor 已弃用,如何在 SwiftUI 中正确设置 TabBarIcon 颜色?

How to set TabBarIcon color correctly in SwiftUI since .accentColor is deprecated?

提问人:Andrei Herford 提问时间:9/16/2022 最后编辑:Andrei Herford 更新时间:9/16/2022 访问量:179

问:

在 SwiftUI 中更改所选内容的颜色似乎很困难。为了在应用程序的中心位置定义设计,我尝试使用它来执行此操作,但没有任何效果:UITabBarItem.appearance()

// Only effects the unselected items
UITabBar.appearance().unselectedItemTintColor = .red

// No effect, deprecated in iOS 8(!)
UITabBar.appearance().selectedImageTintColor = .cyan

// Only effects the title, not the icon 
UITabBarItem.appearance().setTitleTextAttributes([.foregroundColor: UIColor.green], for: .normal)

// No effect
UITabBar.appearance().tintColor = .red

唯一有效的方法是不使用外观代理,而是使用View.accentColor

struct MainView: View {
    var body: some View {
        TabView {
             SomeView()
                .tabItem {
                    Label("Main", systemImage: "list.dash")
                        .tint(.green) // No effect
                }
                .tint(.yellow) // No effect
        }
        .accentColor(.orange)
        
        // No effect
        //.tint(.red)
    }
}

但是,也将被弃用:.accentColor

“accentColor”将在未来的 iOS 版本中被弃用:使用 资产目录的主题色或 View.tint(_:) 代替

在上使用没有效果。 没有外观属性。.tintTabViewUITabBarItemtint

如何在不使用 accentColor 的情况下正确设置图标颜色(最好通过外观)

iOS SwiftUI UITABBAR UITABBARITEM

评论

0赞 Ptit Xav 9/16/2022
您是否尝试将色调放在选项卡项上
0赞 Andrei Herford 9/16/2022
是的,这也没有效果。我相应地更新了问题中的示例代码。

答: 暂无答案