在MacOS Mojave下,弹出窗口中的NSScrollView变得透明

时间:2018-10-15 20:17:17

标签: transparency subview nsscrollview macos-mojave nspopover

在显示为Popover的视图中,我实现了一个帮助子视图(一个将NSScrollView作为子视图的NSView),当用户单击按钮时会出现该视图。使用Sierra&High Sierra,一切都很好,但是自从我将开发MacPro升级到Mojave之后,帮助气泡就变得稍微透明了。处于帮助视图的元素(NSTextField或NSButton)在黑暗模式下仍显示为白色条带,在明亮模式下仍显示为灰色条带

capture of the non-transparent view

我已经将帮助视图及其滚动视图定义为具有自己的图层,并且这两层均设置为不透明

[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时,才会出现此问题。有想法吗?

1 个答案:

答案 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,否则它将被视为不兼容。