在具有多个按钮的 Apple CarPlay
CPGridTemplate
中,来自系统 UIImage
的按钮被系统染成青色,而来自自定义 SVG 的按钮保持黑色。所有使用 .withRenderingMode(...)
、.withTintColor(.cyan)
组合来获取以青色显示的自定义 UIImage 都无济于事。
我意识到,当我从 Apple SF-Symbols 导出 cart.fill 符号作为 SVG 并将其作为自定义 SVG 资源导入 Xcode 时,它也会保留下来。
原因是什么?如何通过 CarPlay 获得与系统符号相同的自定义 SVG 颜色?
// This Button is displayed in CYAN
let cyanButton = CPGridButton(titleVariants: [...],
image: UIImage(systemName: "cart.fill")!)
{ button in ... }
// This Button is displayed in BLACK
let blackButton = CPGridButton(titleVariants: [...],
image: UIImage(named: "playground.fill")!)
{ button in ... }
let gridTemplate = CPGridTemplate(title: ...), gridButtons: [cyanButton, blackButton])
CPGridTemplate 中的自定义 SVG UIImage 保持黑色
我尝试过:
UIImage(named: "playground.fill")!.withRenderingMode(.alwaysTemplate)
UIImage(named: "playground.fill")!.withRenderingMode(.alwaysOriginal)
UIImage(named: "playground.fill")!.withRenderingMode(.alwaysTemplate).withTintColor(.cyan)
UIImage(named: "playground.fill")!.withRenderingMode(.alwaysOriginal).withTintColor(.cyan)
任何想法都非常受欢迎。
使用 PNG 图像而不是 SVG 解决了我的问题。当我从 SF Symbols for image@3x 复制自定义符号时,网格图标看起来与 SF Symbol 系统图像相同的最佳结果如下:
符号风格:浅色
复制为:PNG
点大小:15 pt
像素比例:3
符号比例:小