【发布时间】:2023-03-25 05:17:01
【问题描述】:
某些 UI 设置无法自动使用暗/亮模式更改为 UIColor。例如shadow 在层中。由于我需要在深色和浅色模式下移除和放置阴影,我需要在某个地方放置 updateShadowIfNeeded() 函数。我知道如何检测当前是什么模式:
func dropShadowIfNeeded() {
switch traitCollection.userInterfaceStyle {
case .dark: removeShadow()
case .light: dropShadowIfNotDroppedYet()
default: assertionFailure("Unknown userInterfaceStyle")
}
}
现在我将函数放在layoutSubviews 中,因为每次外观变化时都会调用它:
override func layoutSubviews() {
super.layoutSubviews()
dropShadowIfNeeded()
}
但是这个函数被称为 A LOT。只有在userInterfaceStyle 更改时才触发的正确函数是什么?
【问题讨论】:
标签: swiftui uikit ios-darkmode uitraitcollection