SF Symbols 多彩图标

3
我正在制作一个带有天气图标的应用程序,我想使用苹果的SF Symbols! 在WWDC2020上,他们发布了彩色的图标。

所以我的问题是,为什么我的图标显示为黑色,像这样:

enter image description here

我已将渲染模式设置为alwaysOriginal。但是它没有任何作用。如果我将其设置为template,则会变成蓝色,就像默认的着色颜色一样。
currentConditionImageView.image = UIImage(systemName: "cloud.sun.fill")!.withRenderingMode(.alwaysOriginal)

但根据 SF Symbols 应用程序,该符号应该长这样:

enter image description here

有人遇到过这个问题吗?你是怎么解决的呢?期待你的回答!

请发布您拥有的SFSymbol代码。 - Todd
@Todd,我已经编辑了问题! - Elliot Czigány
2个回答

2
规则是:
在模板环境中,例如按钮等,如果将 .alwaysOriginal 渲染模式应用于多色彩符号图像,则其固有颜色将出现。
但是,图像视图不是模板环境。尝试将此图像作为 UIButton 的图像(而不是背景图像)。

enter image description here

如果您将多彩图像放在非模板环境中,例如图像视图中,并使其成为.alwaysOriginal,那么基本上就是在误用它。您应该将其设置为.alwaysTemplate并接受它作为采用色调颜色的单色图像。

enter image description here


谢谢@matt!有没有什么变通方法,还是我应该将图标导出为图片然后以这种方式使用它们? - Elliot Czigány
我已经尝试过了,即使对于UIButton也不起作用,有时候会出现显示黑色的问题。 - zgjie

0
可以在非模板环境(如UIImageView)中创建一个多彩的SF符号。
例如,可以创建一个白色勾号在绿色背景上的符号。

enter image description here

试试这个:

let config = UIImage.SymbolConfiguration(paletteColors: [.white, UIColor.green])
  
let multicolorCheckmarkImage = UIImage(systemName: "checkmark.circle.fill")?.withConfiguration(config)
        
self.checkmarkImageView.image = multicolorCheckmarkImage

1
你可以移除使用.withRenderingMode(.alwaysTemplate),它仍然会得到正确的结果。 - undefined
谢谢,@HangarRash - 你说得完全正确。我会编辑我的回答。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接