如何基于SF Symbol生成macOS系统风格的动态NSImage图标?
问题:创建适配macOS系统样式的自定义SF Symbol动态图标
我正尝试通过编程创建基于SF Symbols的自定义动态NSImage图标,要让它的外观和行为完全和macOS系统设置里的图标一致——也就是把SF Symbol放在带颜色的圆角矩形容器中央。理想状态下,这些自定义图标不用手动管理状态,就能自动适配当前系统的图标和组件样式(普通/深色/透明/着色)。
苹果在macOS系统设置里是结合SF Symbol名称和ISGraphicIconConfiguration字典来实现动态图标的,这类图标会自动适配当前系统的图标及组件样式(普通/深色/透明/着色)。比如我用NSWorkspace.shared.icon(forFile: url.path)方法获取Safari这类应用包的图标时,就能拿到对应样式的图标。
注意:我不是要直接获取SF Symbol图片,而是要生成基于SF Symbol的容器式图标,不需要用NSImage(systemSymbolName:)方法。
我可以通过以下命令读取当前系统的图标配置:
x@MacBook-Pro-M1 CoreServices % defaults read -g | grep Dark AppleIconAppearanceTheme = RegularDark; AppleInterfaceStyle = Dark;
另外我发现苹果在Info.plist里用了这样的配置:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>ISGraphicIconConfiguration</key> <dict> <key>ISEnclosureColor</key> <string>gray</string> <key>ISSymbolColor</key> <string>white</string> <key>ISSymbolName</key> <string>key.fill</string> </dict> </dict> </plist>
内容的提问来源于stack exchange,提问作者Marek H
相关产品推荐
相关产品推荐

