当我不设置前景色时,当环境改变时,SwiftUI会自动将我对象的颜色设为暗模式。但是,当我设置前景色时,例如:
Text("Jason Parker")
.foregroundColor(Color.black)
SwiftUI将不再更改对象的颜色。我听说UIColor中有系统颜色,但是SwiftUI的颜色不包含这些变量。如何使用SwiftUI将应用程序采用iOS 13 Dark模式?
答案 0 :(得分:1)
这就是我的方法。首先,如果您希望使用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))
现在,显然这是一种简化的配色方案,但是您应该明白这一点。
答案 1 :(得分:0)
您可以强制您的应用仅使用暗模式设置
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()
}
}