SwiftUI-无法更改图像图标的颜色

时间:2020-01-29 19:04:46

标签: swiftui

我正在尝试构建自己的自定义标签栏视图,而在构建自定义按钮时,我无法更改Image()的颜色。

DateTime.Today.ToUniversalTime();

我尝试过前景颜色(Color.white),口音颜色(Color.white)和一些不同的颜色倍增器。除了默认的黑色之外,颜色是不是有其他原因?简单的解决方法只是获取白色图标,但希望我现在可以解决此问题。

5 个答案:

答案 0 :(得分:48)

我不确定您要达到什么目的,但是可能您只需要模板渲染模式,例如

Image(self.icon)
    .renderingMode(.template)
    .foregroundColor(.white)

答案 1 :(得分:3)

在导入图标(从*.pdf导入)的资产中,设置图像集→渲染为→模板图像

enter image description here

在代码中:

Image("ImageFileName")

答案 2 :(得分:1)

您正在制作外观和行为类似于按钮的东西。为什么不从一开始就将其设置为按钮,以便您可以在任意位置重复使用此类按钮?

struct TabBarButton: ButtonStyle {
    var icon: String = "" // you a free to provide a reasonable default
    
    func makeBody(configuration: Self.Configuration) -> some View {
        GeometryReader{ geometry in
            VStack {
                Image(systemName: icon)
                    .resizable()
                    .aspectRatio(contentMode: .fit)
                    .frame(width: geometry.size.width/2, height: CGFloat(25)) // I didn't put therse magic numbers here
                    .foregroundColor(.green) // not very stylish but the color is a at your control
                
                configuration.label
                    .font(.system(size: 8)) // and here
                    .foregroundColor(Color.black)
            }
        }
    }
}

titleaction {}一样使用常规按钮。

    Button("Tab Bar Button") {
        // action code here
    }
    .buttonStyle(TabBarButton(icon: "info.circle"))

以下是向导航栏添加自定义按钮的示例:

struct TabBarButton: PrimitiveButtonStyle {
    var icon: String = "" // you a free to provide a reasonable default
    func makeBody(configuration: Self.Configuration) -> some View {
        VStack {
            Image(systemName: icon)
                .resizable()
                .aspectRatio(contentMode: .fit)
                .foregroundColor(.green) // Changes color in NavBar
            configuration.label
                .foregroundColor(Color.black)
        }
    }
}

然后在ContentView中添加:

    .navigationBarItems(trailing: Button(action: {}, label: {
        Text("Some")
    }).buttonStyle(TabBarButton(icon: "info.circle")))

结果如下所示: ToolBarCustomButton

答案 3 :(得分:1)

此代码将为图像添加任何颜色,只需使用color-name更改名称

Image("Name")
    .resizable()
    .foregroundColor(Color.name)

答案 4 :(得分:-2)

代码如下:

Image("profile_photo").resizable()
.renderingMode(.template)
.foregroundColor(.blue)
.scaledToFill() 
.frame(width: 120, height: 120,alignment: .center)
.clipShape(Circle())