我正在尝试构建我自己的自定义标签栏视图,而在构建我的自定义按钮时,我无法更改 Image() 的颜色。
struct TabBarButton: View {
let title: String
let icon: String
var body: some View {
return GeometryReader{ geometry in
VStack {
Image(self.icon)
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: geometry.size.width/2, height: CGFloat(25))
.foregroundColor(.white)
Text(self.title)
.font(.system(size: 8))
.foregroundColor(Color.white)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试过 foregroundColor(Color.white)、accentColor(Color.white) 和一些不同的颜色乘数。除了默认的黑色之外,是否有其他颜色没有其他原因?简单的修复只是获得白色图标,但希望我现在可以解决这个问题。
Asp*_*eri 97
我不确定你想实现什么,但可能你只需要模板渲染模式,比如
Image(self.icon)
.renderingMode(.template)
.foregroundColor(.white)
Run Code Online (Sandbox Code Playgroud)
Moj*_*ini 15
要使用修改器将颜色设置为单色图像foregroundColor
,您应该确保图像renderingMode
设置为template
Image("Star")
.renderingMode(.template)
.foregroundColor(.yellow)
Run Code Online (Sandbox Code Playgroud)
或者
请注意,图像必须具有 Alpha 通道(如 PNG 或 PDF),否则您将得到一个彩色矩形!
从 iOS 15 开始,Apple 引入了具有更多渲染模式支持的符号。您可以创建一个或更改一个并将其从以下位置导出SF Symbols.app
:
您还可以直接在代码中使用最多 3 种颜色,例如:
SwiftUI 非常简单且功能强大,您可以使用一些修改器立即重新着色图像,例如blendingMode
:
在导入图标上的资产(从 导入*.pdf
)中,设置图像集?呈现为 ?模板图片
在代码中:
Image("ImageFileName")
Run Code Online (Sandbox Code Playgroud)
或者:您可以添加“模板”后缀并设置“Redder 为默认值”。在文档中
如果图片名称以“Template”结尾,则将该图片作为模板,否则将其渲染为原始图片
并在代码中:
Image("ImageFileNameTemplate")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13790 次 |
最近记录: |