SF Symbols 在 iOS 15 小部件中失去颜色

Posted

技术标签:

【中文标题】SF Symbols 在 iOS 15 小部件中失去颜色【英文标题】:SF Symbols lost color in iOS 15 widget 【发布时间】:2021-10-16 11:44:31 【问题描述】:

多色 SF 符号在 ios 15 小部件中为黑色。 (看看附图 14.5 vs 15.0)

这是它在代码中的样子:

Image(uiImage: UIImage(systemName: getIconName(iconId: iconId))!)
    .resizable()
    .scaledToFit()
    .frame(width: 20)

玩弄.renderingMode() 并没有帮助。我已经尝试了所有可能的参数,但没有运气。仅当我将其设置为 .template 并设置一些颜色时,但我需要它保持原样 - 多色。

(它同时发生在 iPhone 和模拟器上(使用 beta iOS 和 beta XCode 测试),我还尝试使用新的 SF 符号,或应用 iOS 15 .symbolRenderingMode() 中提供的新功能,但没有任何帮助。

iOS 14:

iOS 15:

【问题讨论】:

在 macos 12.beta5、xcode 13.beta5、target ios 15 和 macCatalyst 上对我来说同样的问题。视图中的图像。可能是另一个错误。 尝试将Image(uiImage: UIImage(systemName: getIconName(iconId: iconId))!)替换为Image(systemName: getIconName(iconId: iconId)),系统镜像的原生SwiftUI实现。 【参考方案1】:

iOS 15+

部分符号的名称已更改。确保使用正确的名称。


您需要使用 .symbolRenderingMode(.palette) 并使用.foregroundStyle() 视图修饰符显式设置每个图层的颜色

         Image(systemName: "cloud.sun.fill")
                .symbolRenderingMode(.palette)
                .foregroundStyle(.black, .yellow)

?

使用

Image(systemName:getIconName(iconId: iconId))

而不是

Image(uiImage: UIImage(systemName: getIconName(iconId: iconId))!)

【讨论】:

Image(systemName:getIconName(iconId: iconId)) 和 .symbolRenderingMode(.multicolor) 的组合成功了。谢谢

以上是关于SF Symbols 在 iOS 15 小部件中失去颜色的主要内容,如果未能解决你的问题,请参考以下文章