•如何在iOS应用中观察黑暗模式状态 •如何应对iOS应用中黑暗模式状态的变化
答案 0 :(得分:1)
您可以使用以下方法检查项目中的亮模式或暗模式:
LOAD CSV WITH HEADERS FROM "file:///file.csv" AS row
UNWIND KEYS(row) AS bid
WITH bid, row
WHERE bid="equence" AND TOINTEGER(row[bid]) = 0
MATCH (t:Group {Id: row.groupID})
MATCH (b:Element {Id: row.elementID})
WITH b, t
MERGE (t)-[:STARTS]->(b);
您还可以检查界面样式的更改:
switch traitCollection.userInterfaceStyle {
case .light, .unspecified:
case .dark:
}
就像自Mojave以来在macOS中一样,您可以在资产目录中为亮和暗模式定义图像,以便可以自动使用这些图像:
取自here。
答案 1 :(得分:0)
UIKit已经有一段时间UITraitCollection了。从iOS 9开始,您可以使用UITraitCollection来查看设备是否支持3D Touch(另一天令人难过的谈话)
在iOS 13中,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.
}
}