遵循 Apple 的指南,我在 SwiftUI iOS 应用程序中使用 SF_symbols 来表示扑克牌。红心和方块花色是传统的红色,而梅花和黑桃花色是黑色。这个说法:
Text(Image(systemName: "suit.spade"))
Text(Image(systemName: "suit.heart"))
理想情况下,卡片的颜色会根据需要调整为深色模式。浅色模式下为黑色/红色,深色模式下为白色/红色。但是,我无法确定哪个修改器可以实现此效果,并且我想避免自定义算法,以避免用户使用自己的非标准调色板时发生冲突。
我尝试过.symbolRenderingMode
使用不同的修改器来修改该修改器,但这并不能解决问题。
.multicolor
在浅色模式下可以正确显示,但在深色模式下黑桃会在黑色背景上显示为黑色,不太容易访问。.monochrome
但红心不显示为红色。
由于苹果公司提供了彩色的套装符号,我很乐观地认为我可以依赖他们的算法,而无需编写解决方案。
(顺便说一句,我更喜欢4 种颜色,因为这被认为是视力不佳的人最容易使用的模式,有助于区分梅花和黑桃,但如果苹果将此作为标准提供并且支持深色模式,我会选择两种颜色)
*** 更新:@HangarRash 的解决方案是正确的,但 Xcode 预览并未反映这一点,如您在屏幕截图中看到的那样
下面给出了浅色模式下的黑色黑桃和深色模式下的白色黑桃。心形是适合给定模式的红色阴影。
每个符号的“.fill”版本也可以工作。
请注意,Xcode 无法在预览中正确显示这一点。通过在 iOS 模拟器或真实设备中运行应用程序来查看正确的结果。