gpt4 book ai didi

swift - 如何在 SwiftUI 应用程序生命周期中更改特定 View 的状态栏颜色?

转载 作者:行者123 更新时间:2023-12-04 13:52:07 24 4
gpt4 key购买 nike

我在这里尝试了解决方案:SwiftUI: Set Status Bar Color For a Specific View在这里:SwiftUI: Set Status Bar Color For a Specific View
这两种解决方案都使用了 SceneDelegate,这在 SwiftUI 2/3 中显然不存在。理想情况下,我希望针对特定 View 更改颜色。它可能是在这些帖子中显示的修饰符,也可能基于我在 Swift 类中的一个值,我称之为 AppState:

class AppState: NSObject, ObservableObject {
@Published var currentScreen: Screens = .view1
}

enum Screens {
case view1
case view2
case view3
}
我想让'view2'在这种情况下有一个白色的状态栏,但不知道如何做到这一点——非常感谢任何帮助!
更新:
在我的代码中,我有一个带有 Color.black 的 Stack,它在此特定 View 上具有 .edgesIgnoringSafeArea(.all) 属性,但没有其他属性,因此我需要在此 View 中将文本设为白色,而在其他 View 中设为黑色...
Demo

最佳答案

您可以更改 preferredColorScheme但这改变了 View 的整个方案不仅仅是状态栏。字体和背景也会切换。

struct CustomStatusBarView: View {
@StateObject var appState: AppState = AppState()
var body: some View {
ZStack{
Color.gray.ignoresSafeArea()
VStack{
switch appState.currentScreen{

case .view1:
Text("view 1")
case .view2:
Text("view 1").preferredColorScheme(.dark)
case .view3:
Text("view 1")
}
Button("change view", action: {
appState.currentScreen = Screens.allCases.randomElement()!
})
}
}
}
}

关于swift - 如何在 SwiftUI 应用程序生命周期中更改特定 View 的状态栏颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68301730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com