Ios 从应用程序-Swift打开系统暗模式

Ios 从应用程序-Swift打开系统暗模式,ios,swift,xcode,ios13,Ios,Swift,Xcode,Ios13,我在我的应用程序上使用通知制作了自己的暗模式系统,我有一个开关,可以在暗模式打开和关闭之间切换 我的第一个问题是:如何打开系统暗模式,如果通过翻转开关将整个手机更新为iOS 13,那么整个手机也会变成暗模式 我的第二个问题:如何检查系统暗模式是否已启用,以便在每次启用iOS系统暗模式时都能将其设置为启用我的暗模式? 第一个问题:目前不可能 第二个问题:的塔马斯·森格尔的 您应该检查UITraitCollection的userInterfaceStyle变量,与tvOS和macOS上的变量相同

我在我的应用程序上使用
通知制作了自己的暗模式系统,我有一个开关,可以在暗模式打开和关闭之间切换

我的第一个问题是:如何打开系统暗模式,如果通过翻转开关将整个手机更新为iOS 13,那么整个手机也会变成暗模式

我的第二个问题:如何检查系统暗模式是否已启用,以便在每次启用iOS系统暗模式时都能将其设置为启用我的暗模式?

  • 第一个问题:目前不可能
  • 第二个问题:塔马斯·森格尔的

您应该检查
UITraitCollection
userInterfaceStyle
变量,与tvOS和macOS上的变量相同

switch traitCollection.userInterfaceStyle {
case .light: //light mode
case .dark: //dark mode
case .unspecified: //the user interface style is not specified
}
您应该使用
UIView
/
UIViewController
的功能来检测界面环境中的更改(包括用户界面样式的更改)

发件人:

当iOS接口环境更改时,系统调用此方法。根据应用程序的需要,在视图控制器和视图中实现此方法,以响应此类更改。例如,当iPhone从纵向旋转到横向时,可以调整视图控制器子视图的布局。此方法的默认实现为空

系统默认UI元素(如
uitabar
UISearchBar
)自动适应新的用户界面样式

  if #available(iOS 13.0, *) {
            overrideUserInterfaceStyle = .light // or .dark 
        } else {
            // Fallback on earlier versions
        }

使用此方法,您将获得亮模式和暗模式,将此代码放入开关,您的视图将根据暗模式和亮模式的外观进行更改

第一个问题-不可能。第二个问题-这并不能使整个手机达到指定的风格。我在问是否有办法让一个按钮让你的整个手机进入黑暗模式,就像你在设置/控制中心切换一样。答案是目前还没有办法。我正在开发macOS应用程序。您知道我如何在没有
UIKit
的情况下访问
UITraitCollection