SwiftUI
分层的
Use the .foregroundStyle
修饰符。
来自苹果: https://developer.apple.com/documentation/swiftui/symbolrenderingmode/hierarchical
SwiftUI 用前景样式填充第一层,其他层填充前景样式的二级和三级变体。您可以使用显式指定这些样式foregroundStyle(_:_:)
and foregroundStyle(_:_:_:)
修饰符。如果您仅指定主要前景样式,SwiftUI 会自动从该样式派生其他样式。
Image(systemName: "exclamationmark.triangle.fill")
.symbolRenderingMode(.hierarchical)
.foregroundStyle(Color.purple)
Palette
Use the .foregroundStyle
以 2 或 3 种颜色作为参数的修改器。
来自苹果: https://developer.apple.com/documentation/swiftui/symbolrenderingmode/palette
在此模式下,SwiftUI 将图像中每个连续定义的图层映射到前景样式的下一个主要、次要和第三变体。您可以使用显式指定这些样式foregroundStyle(_:_:)
and foregroundStyle(_:_:_:)
修饰符。如果您仅指定主要前景样式,SwiftUI 会自动从该样式派生其他样式。
Image(systemName: "exclamationmark.triangle.fill")
.symbolRenderingMode(.palette)
.foregroundStyle(Color.yellow, Color.cyan)
多色的
Use the .foregroundColor
具有 1 种颜色的修饰符,以及.renderingMode(original)
.
来自苹果: https://developer.apple.com/documentation/swiftui/image/renderingmode(_:)
多色行为是通过使用原始模板渲染模式以及蓝色前景色来实现的。此模式使图形覆盖图像的独特部分的前景色。
Image(systemName: "person.crop.circle.badge.plus")
.renderingMode(.original)
.foregroundColor(.blue)
UIKit
分层的
Use the UIImage.SymbolConfiguration(hierarchicalColor:)
初始化程序。
来自苹果: https://developer.apple.com/documentation/uikit/uiimage/symbolconfiguration/3810053-init
let config = UIImage.SymbolConfiguration(hierarchicalColor: [.systemTeal])
imageView.image = image.applyingSymbolConfiguration(config)
Palette
Use the UIImage.SymbolConfiguration(paletteColors:)
初始化器和两个或三个调色板颜色。
来自苹果: https://developer.apple.com/documentation/uikit/uiimage/symbolconfiguration/3810054-init
let config = UIImage.SymbolConfiguration(paletteColors: [.systemTeal, .systemGray])
imageView.image = image.applyingSymbolConfiguration(config)
多色的
Use the UIImage.SymbolConfiguration(hierarchicalColor:)
初始化器和preferringMulticolor()
.
来自苹果: https://developer.apple.com/documentation/uikit/uiimage/symbolconfiguration/3810052-configurationpreferringmulticolo
使用此方法(preferringMulticolor()
) 获取符号的多色变体(如果存在)。此方法是检索多色符号的主要方法。
为了使此颜色配置生效,您的符号图像必须具有以下内容:
let config = UIImage.SymbolConfiguration(hierarchicalColor: [.systemTeal]).preferringMulticolor()
imageView.image = image.applyingSymbolConfiguration(config)