0

我在 Xcode 13 中有一个颜色资产目录,它定义了一组浅色(“Any”)和深色(“Dark”)变体的颜色。例如:

资产目录颜色的图片

我想以编程方式枚举不同的颜色,意思是,我想获得Color("hkMagenta")两种变体中的颜色()。仅按名称获取它会返回“任何”变体。

我怎样才能得到黑暗的变种?

我原以为这会起作用:

ColorManager.hkMagenta.environment(\.colorScheme, .dark)

不幸的是,没办法...

Cannot convert value of type 'some View' to expected element type 'Array<Color>.ArrayLiteralElement' (aka 'Color')

有任何想法吗?

4

2 回答 2

0

预览图像

您可以根据需要为每个视图指定 .colorScheme

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack(spacing: 20){
            Text("Light Magenta color from asset")
                .font(.headline)
                .foregroundColor(Color("hkMagenta"))
                .environment(\.colorScheme, .light) //ColoScheme
            
            Text("Dark Magenta color from asset")
                .font(.headline)
                .foregroundColor(Color("hkMagenta"))
                .environment(\.colorScheme, .dark) //ColoScheme
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
于 2022-02-04T05:40:56.310 回答
0

感谢@Asperi 指出https://stackoverflow.com/a/66950858/12299030

TL;DR 是,您可以使用如下方式获得浅色和深色变体UIColor.resolvedColor()

let c = Color(UIColor(named: "hkMagenta")!.resolvedColor(with: UITraitCollection(userInterfaceStyle: .dark)))

于 2022-02-06T14:29:33.193 回答