iOS 13引入了语义颜色:一种指定颜色目的而不是其实际值的方法。启用暗模式时,这可以使颜色自动适应。
在UIKit中,可以通过UIColor
上的静态成员(例如UIColor.label()
,UIColor.secondaryLabel()
等)轻松访问这些颜色。在this documentation page上可以找到所有可用语义颜色的详尽列表。
但是,SwiftUI的Color
类型没有等效的静态成员。因此,这将是无效的:
// Error: Type 'Color?' has no member 'secondaryLabel'
var body: some View {
Text("Hello World!")
.color(.secondaryLabel)
}
我该如何在SwiftUI中访问这些语义颜色?
答案 0 :(得分:3)
SwiftUI中的Color结构具有UIColor初始化程序。因此,例如,您可以使用标签UIColor更改“文本前景颜色”。
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)
}
}
}
答案 1 :(得分:0)
虽然Color
没有用于这些语义颜色的静态成员,但是according to the documentation,Color
确实具有允许您指定AppearanceColorName
的初始化程序。
但是,我说“根据文档”是因为到目前为止,该初始化程序似乎在Xcode中不可用。在后续的beta版本中,当此初始化器可用时,可以按以下方式使用它:
var body: some View {
Text("Hello World!")
.color(Color(apperanceName: .secondaryLabel))
}