如何在 iOS 中检查暗模式?
How to check for Dark Mode in iOS?
- 如何在 iOS 应用程序中观察暗模式状态
- 如何对 iOS 应用中暗模式状态的变化做出反应
您可以使用以下代码检查项目中的浅色或深色模式:
func viewDidLoad() {
super.viewDidLoad()
switch traitCollection.userInterfaceStyle {
case .light, .unspecified:
// light mode detected
case .dark:
// dark mode detected
}
}
您还可以查看界面风格的变化:
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
let userInterfaceStyle = traitCollection.userInterfaceStyle // Either .unspecified, .light, or .dark
// Update your user interface based on the appearance
}
就像自 Mojave 以来的 macOS 中一样,您可以在资产目录中为明暗模式定义图像,以便自动使用这些图像:
取自here.
UIKit 已经有一段时间了 UITraitCollection。从 iOS 9 开始,您可以使用 UITraitCollection 来查看设备是否支持 3D Touch(另一天的悲伤对话)
In iOS 12, UITraitCollection 有一个新的 属性: var userInterfaceStyle: UIUserInterfaceStyle
支持三种情况: light
, dark
, 和 unspecified
由于 UIViewController 继承了 UITraitEnvironment,您可以访问 ViewController 的 traitCollection
。这存储 userInterfaceStyle
。
UITraitEnviroment 也有一些漂亮的协议存根,可帮助您的代码解释何时发生状态更改(因此当用户从黑暗面切换到光明面时,反之亦然)。这是一个很好的编码示例:
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if self.traitCollection.userInterfaceStyle == .dark {
// User Interface is Dark
} else {
// User Interface is Light
}
}
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
// Trait collection has already changed
}
override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
// Trait collection will change. Use this one so you know what the state is changing to.
}
}
- 如何在 iOS 应用程序中观察暗模式状态
- 如何对 iOS 应用中暗模式状态的变化做出反应
您可以使用以下代码检查项目中的浅色或深色模式:
func viewDidLoad() {
super.viewDidLoad()
switch traitCollection.userInterfaceStyle {
case .light, .unspecified:
// light mode detected
case .dark:
// dark mode detected
}
}
您还可以查看界面风格的变化:
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
let userInterfaceStyle = traitCollection.userInterfaceStyle // Either .unspecified, .light, or .dark
// Update your user interface based on the appearance
}
就像自 Mojave 以来的 macOS 中一样,您可以在资产目录中为明暗模式定义图像,以便自动使用这些图像:
取自here.
UIKit 已经有一段时间了 UITraitCollection。从 iOS 9 开始,您可以使用 UITraitCollection 来查看设备是否支持 3D Touch(另一天的悲伤对话)
In iOS 12, UITraitCollection 有一个新的 属性: var userInterfaceStyle: UIUserInterfaceStyle
支持三种情况: light
, dark
, 和 unspecified
由于 UIViewController 继承了 UITraitEnvironment,您可以访问 ViewController 的 traitCollection
。这存储 userInterfaceStyle
。
UITraitEnviroment 也有一些漂亮的协议存根,可帮助您的代码解释何时发生状态更改(因此当用户从黑暗面切换到光明面时,反之亦然)。这是一个很好的编码示例:
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if self.traitCollection.userInterfaceStyle == .dark {
// User Interface is Dark
} else {
// User Interface is Light
}
}
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
// Trait collection has already changed
}
override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
// Trait collection will change. Use this one so you know what the state is changing to.
}
}