我正在更新一堆颜色以支持新的 iOS 13 深色模式。我通过新的动态提供程序块构造函数以编程方式使用它们。这里的问题是,有时使用错误的属性值调用块userInterfaceStyle
,导致颜色返回错误的值(有时是深色而不是浅色,有时是浅色而不是深色)。
据我了解,我不需要traitCollection
使用这个新的构造函数来监听变化或任何类似的事情。它应该自动完成(或者我错了吗?)。
这里有趣的是,我尝试通过资产目录使用一些虚拟颜色来做这件事,但它也不起作用。还尝试使用一些新系统提供的动态颜色,例如 .systemBackgroundColor。它有时也解决了颜色错误。
if #available(iOS 13.0, *) {
return UIColor { (traitCollection: UITraitCollection) -> UIColor in
if traitCollection.userInterfaceStyle == .dark {
return darkColor
}
else {
return lightColor
}
}
}
那么,究竟应该发生什么?这应该像我期望的那样工作,还是我绝对需要在特定位置(如内部viewWillLayoutSubviews
或traitCollectionDidChange
)分配颜色?
.resolvedColor(with: UITraitCollection)
使用作品手动解析颜色。但是根据我从文档中了解到的情况,我不需要像这样手动解决它。