在显示为Popover的视图中,我实现了一个帮助子视图(一个将NSScrollView作为子视图的NSView),当用户单击按钮时会出现该视图。使用Sierra&High Sierra,一切都很好,但是自从我将开发MacPro升级到Mojave之后,帮助气泡就变得稍微透明了。处于帮助视图的元素(NSTextField或NSButton)在黑暗模式下仍显示为白色条带,在明亮模式下仍显示为灰色条带
我已经将帮助视图及其滚动视图定义为具有自己的图层,并且这两层均设置为不透明
[help setWantsLayer:YES];
help.layer.opaque = TRUE;
help.backgroundColor = [NSColor colorWithRed:1. green:1. blue:140./255. alpha:1.];
[help.scrollView setWantsLayer:YES];
help.scrollView.layer.opaque = TRUE;
[help.scrollView setBackgroundColor:[NSColor colorWithRed:1. green:1. blue:140./255. alpha:1.]];
所有背景色均设置为该黄色调。 仅当显示帮助视图的视图显示为NSPopover,而不是普通窗口中的NSView时,才会出现此问题。有想法吗?
答案 0 :(得分:0)
在您的info.plist中添加NSRequiresAquaSystemAppearance
= YES
要在黑暗模式下运行任何应用程序,必须运行macOS Mojave 10.14或更高版本。默认情况下,即使系统配置为在黑暗模式下运行,所有现有的应用程序也将在明亮模式下运行。当满足两个条件时,在macOS Mojave上启动的应用将在黑暗模式下运行:
系统认为该应用程序与黑暗模式兼容
正在运行的应用程序的外观设置为Dark Aqua
应用程式与深色模式的相容性取决于建立应用程式的SDK和“NSRequiresAquaSystemAppearance”
Info.plist键的值。如果您的应用是根据10.14 SDK或更高版本构建的,则除非密钥设置为YES
,否则它将被视为兼容。如果您的应用是根据10.13 SDK或更早版本构建的,则除非Info.plist密钥设置为NO
,否则它将被视为不兼容。