renderingMode 是一个修饰符,用于告诉 SwiftUI 这张图片是显示原始颜色,还是当作模板(template) 来重新着色。
func renderingMode(_ renderingMode: Image.TemplateRenderingMode?) -> Image
SwiftUI 中的 Image.TemplateRenderingMode 枚举主要有两个值:
1、.original:使用图片自身的原始颜色(默认);
2、.template:将图片视为模板,仅保留形状,颜色由 foregroundColor 决定。
使用方式
1、原始渲染(.original)
Image("logo")
.renderingMode(.original)
显示图片原本的颜色,不受 .foregroundColor() 影响。

2、模版渲染(.template)
Image("logo")
.renderingMode(.template)
.foregroundColor(.white)
忽略原图颜色,只保留“形状”。使用 .foregroundColor() 来指定显示颜色(这里是白色)。

系统图标(SF Symbols)中,默认是 .template 模式。
Image(systemName: "heart.fill")
.foregroundColor(.red)
可以显示红色的爱心图标,如果使用 .renderingMode(.original),它则会恢复系统默认的配色样式(比如多层彩色图标)。
总结
renderingMode 控制图片是显示原色(.original)还是作为模板(.template)。
模板模式下,图片的颜色会被 foregroundColor 接管。
在Xcode的Asset Catalog中,还可以设置图片资源的默认渲染模式:
Asset文件夹 → 图片 → Show the Attributes inspector → Render As → emplate Image。

