【问题标题】:Turn on system dark mode from app - Swift从应用程序打开系统暗模式 - Swift
【发布时间】:2020-01-02 05:11:30
【问题描述】:

我使用Notifications 在我的应用程序上创建了自己的暗模式系统,并且我有一个可以在暗模式打开和关闭之间切换的开关。

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

我的第二个问题:如何检查是否启用了系统暗模式,以便我可以在启用 iOS 系统暗模式时启用我的暗模式?

【问题讨论】:

标签: ios swift xcode ios13


【解决方案1】:
  • 第一个问题:目前不可能
  • 第二个问题: Answer of Tamás Sengel

您应该检查UITraitCollectionuserInterfaceStyle 变量,与tvOS 和macOS 上相同。

switch traitCollection.userInterfaceStyle {
case .light: //light mode
case .dark: //dark mode
case .unspecified: //the user interface style is not specified
}

您应该使用UIView/UIViewControllertraitCollectionDidChange(_ previousTraitCollection: UITraitCollection?)函数来检测界面环境的变化(包括用户界面风格的变化)。

来自Apple Developer Documentation

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

系统默认 UI 元素(例如 UITabBarUISearchBar)会自动适应新的用户界面样式。

【讨论】:

  • 我正在开发一个 macOS 应用程序。你知道我如何在没有UIKit 的情况下访问UITraitCollection 吗?
【解决方案2】:
  if #available(iOS 13.0, *) {
            overrideUserInterfaceStyle = .light // or .dark 
        } else {
            // Fallback on earlier versions
        }

用这个方法你会得到亮模式和暗模式,把这个代码放到开关中,你的视图会根据暗和亮的外观变化。

【讨论】:

  • 这不会让整个手机变成指定的样式。我在问是否有办法让一个按钮让你的整个手机进入黑暗模式,就像你在设置/控制中心切换它一样。答案是目前还没有办法。
猜你喜欢
  • 2021-11-10
  • 1970-01-01
  • 1970-01-01
  • 2015-10-06
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多