SwiftUI自定义TabBar图标

时间:2019-12-06 14:51:42

标签: swift tabbar

这是关于SwiftUI的。

我的自定义PNG 75x75,黑色,背景透明TabBar图标没有得到颜色。我的图标始终为黑色,无论该图标是否处于活动状态。我在做什么错了?

Text("Test")
   .tabItem {
       Image("MyIcon")
       Text("MyName")
   }.tag(0)

4 个答案:

答案 0 :(得分:0)

模板模式应该可以在这里工作,例如

Image("MyIcon")
    .renderingMode(.template)

答案 1 :(得分:0)

.renderingMode(.template)完成此操作。

如果您不想为每个图像添加渲染模式,则只需在 Assets.xcassets 中选择它们,然后在“呈现为”下的右侧面板

答案 2 :(得分:0)

这是我该怎么做

• keep separate images for the selected and unselected version 
• use @State var to define the image names and update it using onAppear and onDisappear

以下示例

struct ContentView: View {
    @State var selectedTab = 0
    @State var tab0_image = "<custom-image-tab0_unselected"
    @State var tab1_image = "<custom-image-tab1_unselected"

    var body: some View {

        TabView(selection: $selectedTab) {

            View_tab0().tabItem({
                Image(tab0_image)
            }).tag(0)
                .onAppear{self.tab0_image = "<custom-image-tab0_selected>"}
                .onDisappear{self.tab0_image = "<custom-image-tab0_selected>"}

            View_tab1().tabItem({
                Image(tab1_image)
            }).tag(1)
                .onAppear{self.tab1_image = "<custom-image-tab1_selected>"}
                .onDisappear{self.tab1_image = "<custom-image-tab1_selected>"}
        }
    }
}

答案 3 :(得分:0)

如@Will Danner所指示,正确的方法是下面所附屏幕快照中显示的方法。您必须在Template Image

中更改为Render As

enter image description here