SwiftUI-访问iOS 13';语义色彩

SwiftUI-访问iOS 13';语义色彩,swiftui,Swiftui,iOS 13引入了语义颜色:一种指定颜色用途而非实际值的方法。这允许颜色在启用暗模式时自动调整 在UIKit中,可以通过UIColor上的静态成员轻松访问这些颜色(例如UIColor.label(),UIColor.secondaryLabel()等)。可以在上找到所有可用语义颜色的广泛列表 但是,SwiftUI的Color类型没有等效的静态成员。因此,这将是无效的: //错误:类型“Color”没有成员“secondaryLabel” var body:一些观点{ 文本(“你好,世界!”) .

iOS 13引入了语义颜色:一种指定颜色用途而非实际值的方法。这允许颜色在启用暗模式时自动调整

在UIKit中,可以通过
UIColor
上的静态成员轻松访问这些颜色(例如
UIColor.label()
UIColor.secondaryLabel()
等)。可以在上找到所有可用语义颜色的广泛列表

但是,SwiftUI的
Color
类型没有等效的静态成员。因此,这将是无效的:

//错误:类型“Color”没有成员“secondaryLabel”
var body:一些观点{
文本(“你好,世界!”)
.color(.secondary标签)
}

如何在SwiftUI中访问这些语义颜色?

虽然
Color
没有这些语义颜色的静态成员,但
Color
有一个初始值设定项,允许您指定
外观颜色名

但是,我说“根据文档”,因为到目前为止,这个初始值设定项在Xcode中似乎不可用。在随后的beta版中,当此初始值设定项可用时,可以如下使用:

var主体:一些视图{
文本(“你好,世界!”)
.color(颜色(外观名称:。第二标签))
}

SwiftUI中的颜色结构具有UIColor初始化器。例如,您可以使用标签UIColor更改文本foregroundColor

import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationView {
            Text("Hello World")
                .foregroundColor(Color(.label))
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        Group {
            ContentView()

            ContentView()
                .environment(\.colorScheme, .dark)
        }
    }
}

实际上,这在Xcode中不可用的原因是因为此API仅适用于macOS。文档中也有这样的描述。如果您创建了一个macOS项目并使用SwiftUI,那么它应该是可用的。