如果我不设置foregroundColor属性,当环境改变时,SwiftUI会自动将我的对象颜色调整为暗模式。然而,如果我设置了foregroundColor属性,例如:
Text("Jason Parker")
.foregroundColor(Color.black)
SwiftUI将不再更改对象的颜色。我听说UIColor中有系统颜色,但是SwiftUI的Color不包括这些变量。我该如何使用SwiftUI来适应iOS 13的深色模式?
UIColor
语义,你可以在...是beta 5吗?Color(color: Color(UIColor.systemBackground)
colorScheme
:@Environment (\.colorScheme) var colorScheme:ColorScheme
Color
扩展名:最初的回答extension Color {
static let yellow = Color.yellow
static let darkGrey = Color.init(UIColor.darkGray)
static func backgroundColor(for colorScheme: ColorScheme) -> Color {
if colorScheme == .dark {
return yellow
} else {
return darkGrey
}
}
}
并且像这样使用它:
Text(""Hello world!").background(Color.backgroundColor(for: colorScheme))
你可以强制你的应用程序仅使用暗模式设置
window.overrideUserInterfaceStyle = .dark
在你的SceneDelegate.swift文件中:
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
let contentView = LoginView()
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
window.overrideUserInterfaceStyle = .dark
window.rootViewController = UIHostingController(rootView: contentView)
self.window = window
window.makeKeyAndVisible()
}
}