ios 如何在SwiftUI中以编程方式获取资产目录颜色变量?

2exbekwf  于 5个月前  发布在  iOS
关注(0)|答案(2)|浏览(88)

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


的数据
我想以编程方式枚举不同的颜色,这意味着,我想在两个变量中获得颜色(Color("hkMagenta"))。
我如何才能获得黑暗变种?
我原以为这会奏效:

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

字符串
很遗憾,不行。
无法将类型“some View”的值转换为所需的元素类型“Array.ArrayLiteralElement”(又名“Color”)
有什么想法吗?

gstyhher

gstyhher1#


的数据
您可以根据需要为每个视图指定.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()
    }
}

字符串

68bkxrlz

68bkxrlz2#

感谢@ jujiu指出https://stackoverflow.com/a/66950858/12299030
TL;DR是,你可以使用UIColor.resolvedColor()得到亮和暗的变量,如下所示:

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

字符串

相关问题