CarPlay SwiftUI 不会对非系统 UIImage 应用颜色

问题描述 投票:0回答:1

在具有多个按钮的 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)

任何想法都非常受欢迎。

swiftui uiimage carplay
1个回答
0
投票

使用 PNG 图像而不是 SVG 解决了我的问题。当我从 SF Symbols for image@3x 复制自定义符号时,网格图标看起来与 SF Symbol 系统图像相同的最佳结果如下:

符号风格:浅色
复制为:PNG
点大小:15 pt
像素比例:3
符号比例:小

© www.soinside.com 2019 - 2024. All rights reserved.