我正在尝试构建自己的自定义标签栏视图,而在构建自定义按钮时,我无法更改Image()的颜色。
DateTime.Today.ToUniversalTime();
我尝试过前景颜色(Color.white),口音颜色(Color.white)和一些不同的颜色倍增器。除了默认的黑色之外,颜色是不是有其他原因?简单的解决方法只是获取白色图标,但希望我现在可以解决此问题。
答案 0 :(得分:48)
我不确定您要达到什么目的,但是可能您只需要模板渲染模式,例如
Image(self.icon)
.renderingMode(.template)
.foregroundColor(.white)
答案 1 :(得分:3)
答案 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)
}
}
}
}
与title
,action {}
一样使用常规按钮。
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")))
答案 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())