【问题标题】:How to set @Environment(\.colorScheme) back to system/automatic?如何将@Environment(\.colorScheme) 设置回系统/自动?
【发布时间】:2021-01-24 13:48:36
【问题描述】:

我正在尝试在我的应用设置页面中添加一个视图,用户可以在其中选择强制暗模式、亮模式或保持系统行为。

如果我将.environment(\.colorScheme) 添加到ContentView 它可以正常工作,以防我强制使用两个主题之一,但由于可用选项只有.light.dark 我如何回到.automatic ?

我还尝试对配色方案使用条件修饰符,这很有效,但问题是它最终会重新加载所有应用程序,并导致应用程序将表单设置跳转到主屏幕。

【问题讨论】:

    标签: ios swift swiftui ios14


    【解决方案1】:

    您可以使用首选配色方案,如下例所示

    VStack {
       // ... some other code
    }
    .preferredColorScheme(someStateFlag ? .dark : nil)   // on some condition reset
    

    【讨论】:

    • 我也试过这个,但它的效果是一样的,明暗都可以,但设置 nil 不会将主题改回设备上设置的主题
    • @LualdiDylan 是的,这确实看起来像一个 SwiftUI 错误。有人在 Apple 开发者论坛上发布了解决方法:developer.apple.com/forums/thread/658818
    • 截至今天,设置 .preferredColorScheme(nil) 在真实设备和带有 iOS 14.5 的 x86 Mac 上的模拟器上运行良好。它似乎在装有 iOS 14.4 的 M1 Mac 上的模拟器上出现了错误,甚至是新的模拟器。也许我只需要在那里升级。
    猜你喜欢
    • 2021-03-05
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 2016-08-19
    • 1970-01-01
    • 2011-07-08
    相关资源
    最近更新 更多