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 小部件中失去颜色的主要内容,如果未能解决你的问题,请参考以下文章

SF Symbols 使用

如何在 SwiftUI 中基于 SF Symbols 获得相同大小的圆形图像?

为啥 Xcode 中的 SF Symbols 中的符号在 renderMode (.original) 中保持黑色

有没有办法在 macOS SwiftUI 开发中使用 SF Symbols?

swiftui 在您的项目中使用非 SF Symbols SVG

Flutter iOS - 在加载 Google Maps 小部件之前无法获取 initialCameraPosition 的当前位置