SwiftUI 以编程方式更改颜色主题
Posted
技术标签:
【中文标题】SwiftUI 以编程方式更改颜色主题【英文标题】:SwiftUI Change color theme programmatically 【发布时间】:2019-11-13 15:15:49 【问题描述】:我有 .light 和 .dark 主题。
在预览 (MyContainer_Previews) 中,我可以通过以下方式更改它们:
ForEach([.light,.dark], id: \.self) theme in
Group
...
.environment(\.colorScheme, theme) //This line
...
如何动态更改应用主题(例如按钮操作)。 我尝试在 SceneDelegate 中更改它:
let contentView = ContentView()
contentView.environment(\.colorScheme, .dark) //Not work
【问题讨论】:
方案不是iPhone用户控制的吗? 我需要覆盖它。如果用户想要总是黑暗或光明。 我已经回答了你的问题 【参考方案1】:反应性:
return NavigationView
VStack(alignment: .trailing, spacing: 0)
...
.environment(\.colorScheme, appState.options.theme == .light ? .light : .dark)
【讨论】:
如果我不希望我的视图位于导航视图内怎么办?【参考方案2】:有人告诉我,如果您将代码放在 NavagationView 中,您可以使用您的enviorment
更改方案。
var body: some View
NavigationView
//Your view here
let contentView = ContentView()
contentView.environment(\.colorScheme, .dark) //works now
UIHostingController(rootView: ContentView().environment(\.colorScheme, .light)
struct ContentView: View
var body: some View
NavigationView
Text("!")
【讨论】:
以上是关于SwiftUI 以编程方式更改颜色主题的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式更改 swiftUI DatePicker 的选定值