You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS 15小组件中多色SF Symbols变为黑色问题如何解决?

问题原因

iOS 15调整了小组件内SF Symbols的默认渲染策略,默认会继承小组件全局前景色,原生多色SF Symbols会被强制覆盖为单色显示,iOS 14无该逻辑所以渲染正常。

修复方案

  • 创建UIImage时显式指定渲染模式为alwaysOriginal,保留原图的多色配置,修改后代码如下:
if let uiImage = UIImage(systemName: getIconName(iconId: iconId))?.withRenderingMode(.alwaysOriginal) {
    Image(uiImage: uiImage)
        .resizable()
        .scaledToFit()
        .frame(width: 20)
}

如果使用纯SwiftUI的Image初始化(无需UIImage桥接),也可以直接添加.symbolRenderingMode(.original)修饰符实现同样效果。

  • 检查代码中是否给Image或者其父视图添加了foregroundColor修饰符,全局前景色会覆盖SF Symbols的原生多色,需要移除针对图标区域的全局前景色设置。
  • 确认使用的SF Symbols本身支持多色渲染,且项目中导入的SF Symbols资源包没有开启强制单色配置。

效果对比

iOS 14 正常多色效果:
iOS14效果

iOS 15 异常黑色效果:
iOS15效果

内容的提问来源于stack exchange,提问作者Palejandro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 19:48:01