SwiftUI:在设备上测试时未检测到暗模式

SwiftUI: Dark mode not detected when testing on device

我正在尝试使用 SwiftUI 在我的 iOS 应用程序中实现暗模式:简单的测试是更改背景颜色。

我已经设置了我的颜色集,如下所示:

ContentView.swift:

import SwiftUI

struct ContentView : View {

  @EnvironmentObject var session: SessionStore

  func getUser () {
      session.listen()
  }

  var body: some View {
    Group {
      if (session.session != nil) {
        VStack {
            WelcomeView()
            .background(Color("bg"))
            .edgesIgnoringSafeArea(.all)
        }
      } else {
        VStack {
            SigninView().transition(.move(edge: .bottom))
        }.frame(maxHeight: .infinity)
            .background(Color("bg"))
            .edgesIgnoringSafeArea(.all)
      }
    }.animation(.spring())
    .onAppear(perform: getUser)
  }
    
}

这行不通。但是,当在 .onAppear 之后使用 .colorScheme(.dark) 强制暗模式时 - 它有效。

使用 @Environment (\.colorScheme) var colorScheme:ColorScheme 调试时 returns 浅色 ,即使我的 iPhone 设置为深色模式。

我是不是漏掉了什么?

我明白了。结果 用户界面样式 在我的 Info.plist 文件中被设置为 light - 只需删除它。

目标 iOS 14.0

折腾了一天多,终于找到了解决办法。 如果它可以帮助那里的人..

我的应用程序需要在应用程序启动时获取系统 ColorScheme,然后由用户在应用程序设置中处理。有些视图专门强制为 .dark,有些则强制为 .light。 User Interface Style 未在 Info.plist 中设置,Appearance 也未设置。

同样的问题:@Environment (\.colorScheme) var colorScheme:ColorScheme 返回时总是很亮!我在做什么,或者在哪里检索到值..

在测试了所有互联网的解决方案后,这里是:

UITraitCollection.current.userInterfaceStyle

在我的案例中,这是获得正确 phone 暗模式设置的唯一方法。

希望它会避免在这上面浪费太多时间。