• Как наблюдать состояние темного режима в приложении iOS • Как реагировать на изменения в состоянии темного режима в приложении iOS
Как проверить iOS Dark Mode?
Ответ 1
UIKit уже некоторое время проводит UITraitCollection. Начиная с iOS 9, вы можете использовать UITraitCollection, чтобы увидеть, поддерживает ли устройство 3D Touch (печальный разговор для другого дня)
В 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.
}
}
Ответ 2
Вы можете использовать следующий метод для проверки на светлый или темный режим в вашем проекте:
switch traitCollection.userInterfaceStyle {
case .light, .unspecified:
case .dark:
}
Вы также можете проверить изменения в стиле интерфейса:
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
}
Как и в macOS, начиная с Mojave, вы можете определять изображения для светлого и темного режимов в каталоге ресурсов, чтобы эти изображения использовались автоматически:
Взято из здесь.