iOS 13 引入了语义颜色:一种指定颜色用途而不是其实际值的方式。这允许颜色在启用暗模式时自动适应。
UIKit中,这些颜色可以很容易地通过对静态成员访问UIColor(例如UIColor.label(),UIColor.secondaryLabel()等)。可以在此文档页面上找到所有可用语义颜色的详细列表。
但是,SwiftUI 的Color类型没有等效的静态成员。因此,这将是无效的:
// Error: Type 'Color?' has no member 'secondaryLabel'
var body: some View {
Text("Hello World!")
.color(.secondaryLabel)
}
Run Code Online (Sandbox Code Playgroud)
我将如何在 SwiftUI 中访问这些语义颜色?
Edw*_*ard 11
SwiftUI 中的 Color 结构有一个 UIColor 初始值设定项。例如,您可以使用标签 UIColor 更改 Text 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)
}
}
}
Run Code Online (Sandbox Code Playgroud)
虽然Color这些语义颜色没有静态成员,但根据文档,Color确实有一个初始值设定项,允许您指定AppearanceColorName.
然而,我说“根据文档”是因为,到目前为止,这个初始化程序似乎在 Xcode 中不可用。在后续的测试版中,当此初始化程序可用时,可以像这样使用它:
var body: some View {
Text("Hello World!")
.color(Color(apperanceName: .secondaryLabel))
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2549 次 |
| 最近记录: |