更改状态栏颜色 SwiftUI 没有 UIHosting
Posted
技术标签:
【中文标题】更改状态栏颜色 SwiftUI 没有 UIHosting【英文标题】:Change Status Bar Color SwiftUI no UIHosting 【发布时间】:2020-11-23 17:09:37 【问题描述】:我正在尝试动态更改状态栏颜色但没有成功,有人知道如何更改吗? 我没有使用 UIHosting 控制器,因此没有完全使用 swiftUI 的 AppDelegate 或 SceneDelegate:
@main
struct MyProjectApp: App
如果我设置ZStack .preferredColorScheme(.light)
它只适用一次,所以如果我转到另一个视图并尝试输入ZStack .preferredColorScheme(.dark)
它不起作用。
我想我已经在 *** 上尝试了所有问题,所以如果有人有明确的解决方案,我将不胜感激。
@更新的代码示例
struct ContentA: View
var body: some View
NavigationView
ZStack
NavigationLink(destination: ContentB())
Text("Show Detail View")
.navigationBarTitle("Navigation")
.preferredColorScheme(.light)
struct ContentB: View
var body: some View
ZStack
Text("Hello ContetB")
.padding()
.foregroundColor(.green)
.preferredColorScheme(.dark)
如果您尝试使用这种方式更改状态栏颜色,它不起作用。
【问题讨论】:
preferredColorScheme
改变了整个屏幕的配色方案,不仅仅是状态栏。你确定要让它工作吗?
@Asperi 好的,这很好,但它只能工作一次......
【参考方案1】:
应用程序中的颜色应该是自动动态的,除非您专门设置它们。您可以在 Previews 部分切换 .preferredColorScheme。
struct ContentView: View
var body: some View
Text("Hello, world!")
struct ContentView_Previews: PreviewProvider
static var previews: some View
ContentView()
.preferredColorScheme(.dark)
【讨论】:
正如我之前评论的那样,如果我使用preferredColorScheme(.dark) 它只能工作一次,如果我有第二个屏幕并放置preferredColorScheme(.light) 它将不起作用。 在设备上运行时,整个应用程序将采用单一配色方案。我不确定你想做什么。 我更新了主要问题,你能看看你是否知道如何解决这个问题?以上是关于更改状态栏颜色 SwiftUI 没有 UIHosting的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SwiftUI 应用程序生命周期中更改特定视图的状态栏颜色?