从iOS / iPadOS 13开始,提供了深色用户界面样式,类似于macOS Mojave中引入的深色模式。如何检查用户是否已启用系统范围的暗模式?
某些 UI 设置无法在暗/亮模式下自动工作,因为UIColor. 例如shadow在图层中。因为我需要在明暗模式下删除和放置阴影,所以我需要在某个地方放置updateShadowIfNeeded()函数。我知道如何检测当前的模式:
func dropShadowIfNeeded() {
switch traitCollection.userInterfaceStyle {
case .dark: removeShadow()
case .light: dropShadowIfNotDroppedYet()
default: assertionFailure("Unknown userInterfaceStyle")
}
}
Run Code Online (Sandbox Code Playgroud)
现在我把这个函数放在 里面layoutSubviews,因为每次外观改变时它都会被调用:
override func layoutSubviews() {
super.layoutSubviews()
dropShadowIfNeeded()
}
Run Code Online (Sandbox Code Playgroud)
但是这个函数被调用了很多。只有在userInterfaceStyle更改时才触发的正确功能是什么?