You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在macOS中获取系统选中颜色?

如何获取SwiftUI中系统默认的列表选中颜色?

问题说明

我需要获取系统默认的、用于列表行选中状态或图标显示的选中颜色。尝试过.accentColor(Color.primary)、.background(Color.secondary)等写法,但SwiftUI的Colors API仅提供.gray、.blue这类具体颜色,以及.primary、.secondary属性——但这两个属性实际返回的都是蓝色,和系统默认选中色不匹配。我自己实现了以下代码,但颜色匹配度并不理想:

List{}.listRowBackground(selected?.wrappedValue == listItem ? .accentColor.opacity(0.85) : Color.clear)

完美匹配的解决方案

要精准获取系统默认的列表选中背景色,直接使用UIKit提供的系统颜色即可,在SwiftUI中通过Color包装器调用:

List{}.listRowBackground(selected?.wrappedValue == listItem ? Color(UIColor.systemSelectedBackground) : Color.clear)

UIColor.systemSelectedBackground是iOS 13及以上系统提供的标准选中背景色,能完全匹配系统原生列表行的选中效果,无需手动调整透明度或颜色值。

如果需要适配iOS 12及更低版本,可以回退使用近似的系统灰度色:

extension Color {
    static let systemSelectedBackground: Color = {
        if #available(iOS 13.0, *) {
            return Color(UIColor.systemSelectedBackground)
        } else {
            return Color(UIColor.systemGray5)
        }
    }()
}

之后直接调用自定义扩展的颜色即可:

List{}.listRowBackground(selected?.wrappedValue == listItem ? .systemSelectedBackground : Color.clear)

内容的提问来源于stack exchange,提问作者Keith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 20:55:11