我正在尝试从系统中获取选择颜色。我在整个系统中看到了这一点,其中列表行选择或显示系统颜色的图标
.accentColor(Color.primary)
.background(Color.secondary)
etc
Colors API 似乎只有 .gray、.blue、.green 等以及 .secondary 和 .primary。硬编码名称返回各自的颜色,次要接缝和主要接缝返回蓝色。
编辑1
这就是我的决定...这是一场势均力敌的比赛,但并不完美。
List{}.listRowBackground(selected?.wrappedValue == listItem ? .accentColor.opacity( 0.85) : Color.clear)
Color.accentColor
是用户在此系统设置页面中选择的“强调颜色”(图片来自 Apple 支持):
强调色是应用于视图和控件的广泛主题颜色。您可以通过在应用程序的资产目录中指定强调色来在应用程序级别进行设置。
在 macOS 中,仅当用户在系统偏好设置中的“常规”>“强调色”下选择“多色”时,SwiftUI 才会应用强调色的自定义。
如果选择“多色”,
Color.accentColor
将是资产目录中名为“AccentColor”的颜色。
accentColor(_:)
视图修改器可以更改Color.accentColor
返回的颜色。也就是说,您首先不应该使用 accentColor(_:)
,因为它自 macOS 14.4 以来已被弃用。它的大多数用例都可以替换为 .tint(_:)
,这不会改变 Color.accentColor
的含义。