如何在SwiftUI中仅将首选颜色方案应用于一个视图,并不应用于视图层次结构中的其他视图

8

我正在尝试让一个视图在深色模式下呈现,而我的应用程序的其余部分是在用户选择的颜色方案中。当我将.preferredColorScheme(.dark)应用于子视图时,它也会导致其他视图变暗。我该如何修复这个行为?

内容视图:

NavigationView {
    ZStack {
        NavigationLink(isActive: $showingGoalDashboardView) {
            TestView(goal: goals.first!)
        } label: {
            EmptyView()
        }
                
        NavigationLink(isActive: $showingCreateGoalView) {
            CreateGoalView(showingGoalCreateView: $showingCreateGoalView)
        } label: {
            EmptyView()
        }
                
        LoadingView()
    }
}

LoadingView: LoadingView 只包含一些 UI 元素,全部包装在一个带有属性 .preferredColorScheme(.dark)ZStack 中。

2个回答

2
preferredColorScheme不是按视图而是按当前演示方式工作 - 在这种情况下是当前窗口。请参阅文档:demoLoadingView放入表格或弹出视图、新窗口等中,然后会独立应用暗模式。View.colorScheme仍然可以使用并且有效,但已被弃用,请注意。
    LoadingView()
        .colorScheme(.dark)

使用Xcode 13.4 / iOS 15.5进行测试


这不会覆盖系统的颜色方案设置。系统的设置优先。 - Petar

0
你可以使用这个:
LoadingView()
    .environment(\.colorScheme, .dark)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接