我正在Swift中制作一个macOS应用,当我切换黑白亮和暗模式时,我看到一个奇怪的问题。在亮模式下,图像周围出现的阴影很好,但是在暗模式下默认情况下我得到的阴影看起来不太好。有谁知道如何解决这一问题?对于其他所有UI元素(如复选框,单选按钮等),我都得到了相同的结果。
不好
好
注意:
答案 0 :(得分:1)
您可以尝试在NSView
上实现viewDidChangeEffectiveAppearance(),也可以在NSApp.effectiveAppearance
上进行键值观察。这样,您将收到有关明/暗模式之间外观变化的通知,以便您做出相应的反应。
答案 1 :(得分:1)
您可以检测视图是否为暗模式。在黑暗模式下,您可以隐藏阴影。
NSView
添加扩展名:extension NSView {
func isDarkMode() -> Bool {
if #available(OSX 10.14, *) {
return effectiveAppearance.bestMatch(from: [.darkAqua, .aqua]) == .darkAqua
}
return false
}
}
viewDidChangeEffectiveAppearance
方法。class CustomView: NSView {
override func viewDidChangeEffectiveAppearance() {
// edit shadow's properties. ex: shadowOpacity.
if isDarkMode() {
// dark mode
} else {
// light mode
}
}
}
答案 2 :(得分:1)
确保视图的超级视图也没有定义阴影或背景不透明。
如果超级视图的背景不透明,则子视图也会有阴影。