我正在尝试在SwiftUI Image
类中设置图像色调。
对于UIKit,我可以使用以下方法设置图像色调:
let image = UIImage(systemName: "cart")!.withTintColor(.blue)
但我在SwiftUI文档中找不到这样的设置
我正在尝试在SwiftUI Image
类中设置图像色调。
对于UIKit,我可以使用以下方法设置图像色调:
let image = UIImage(systemName: "cart")!.withTintColor(.blue)
但我在SwiftUI文档中找不到这样的设置
在新的 SwiftUI
中设置 tint
的方法如下:
Image("ImageName")
.foregroundColor(.red)
根据源图像,您可能还需要额外的渲染模式修饰符:
Image("ImageName")
.renderingMode(.template)
.colorMultiply(.red)
// or
Image("ImageName")
.colorMultiply(.blue)
你可以阅读这个主题。
这对我有用,
Image("ImageName")
.renderingMode(.template)
.foregroundColor(.white)
Image
上使用color multiple
修饰符来实现:Image("logo_small")
.colorMultiply(.green)
对于单色图像,请使用渲染模式
如果您有一张单色图像或者只有轮廓很重要的图像,请使用 template
的渲染模式,然后应用前景色。这将把颜色设置为图像中所有非透明像素的颜色:
Image("swift")
.renderingMode(.template)
.foregroundColor(.blue)
color multiple
命令处理单色图像通常会导致不良结果,例如整个图像变成黑色。为了进行着色,您可以使用 .blendMode
修改器将您的图像与另一个图像或颜色进行组合。在 Xcode 14.0+ 中有 20 多种类似于 Photoshop 的混合模式可用。 SwiftUI 最适合着色的混合模式是:
如果改变混合颜色的亮度和饱和度,您会得到与此处不同的结果。
以下是代码:
struct ContentView: View {
var body: some View {
ZStack {
Rectangle()
.fill(Gradient(colors: [.red, .yellow]))
.ignoresSafeArea()
Image("XcodeIcon")
.resizable()
.scaledToFit()
.blendMode(.softLight)
}
}
}
SwiftUI 4.x:
方案1:
Image("your_image_name")
.resizable()
.renderingMode(.template)
.foregroundColor(.white)
方法二:
Image("your_image_name")
.resizable()
.renderingMode(.template)
.colorMultiply(.red)
let uiImage = UIImage(systemName: "cart")!.withTintColor(.blue)
let image = Image(uiImage: uiImage)
那么你就可以使用名为 image
的常量与SwiftUI一起使用。
uiImage
。我就是这样做的,这对我有用。 - Todd
Image("ImageName").renderingMode(.template).colorMultiply(.red)
- dead_can_dancerenderingMode
+colorMultiply
,一些颜色会表现得很奇怪(例如,白色会变成蓝色)。所以我只是用foregroundColor
替换了colorMultiply
。最终结果:Image("ImageName").renderingMode(.template).foregroundColor(.red)
。 - Caio Ambrosio