你如何在NSWindow上使用黑暗的活力?

时间:2014-10-19 03:33:43

标签: objective-c cocoa nswindow appkit osx-yosemite

NSAppearanceNameVibrantDark使用充满活力的暗(NSAppearanceNameVibrantLight)或充满活力之光(NSWindow)模式的正确方法是什么?

我正在构建一个应用程序,并希望提供新的Vibrant Dark外观作为主要应用程序NSWindow的选项。窗口本身是一个非常直接的窗口,顶部有NSToolbar,滚动视图是主要内容区域。

Apple提供了大量有关使用新动态外观和NSVisualEffectsView的信息,但我正在寻找有关如何在{{1}上使用这些外观的说明}。

NSWindow标题文件中,有一条评论指出只应在NSAppearance.h上设置充满活力的外观。没有提及NSVisualEffectsView支持它。

WWDC视频谈论确保您使用图层支持的视图,以及在使用新的充满活力的外观时您是否允许在子视图上保持活力,但同样,没有提及在NSWindow

VisualEffectsPlayground示例代码确实有一个类似Facetime的应用程序的示例,该应用程序使用暗光振动模式,但它没有工具栏,并且它使用全内容掩码。

根据该信息,我在NSWindow方法中执行以下操作:

NSWindowController's windowDidLoad

而且,当然,我得到一个带有黑色窗口标题栏的黑色[self.window.contentView setWantsLayer:YES]; self.window.appearance = [NSAppearance appearanceNamed:NSAppearanceNameVibrantDark]; 。所以看起来就像它正常工作一样,但当我的滚动视图滚动其内容(图像的缩略图)时NSToolbar和窗口标题栏下的标准半透明度不存在或随机存在。似乎没有任何模式。有时当我滚动滚动视图时,内容显示在"模糊"工具栏和标题栏下的状态。其他时候滚动时,工具栏和标题栏只是一个不透明的黑色。 (标题栏和工具栏仍然绘制其标题和按钮。)

当我不为窗口的内容视图请求图层时,我会获得更多灰色标题栏和窗口标题,而不是"纯粹的"黑的那个。 (我的滚动视图的背景颜色可以是白色,深灰色或黑色。)

如何正确配置NSToolbar(包含NSWindowNSToolbar)以使用新的活力外观的任何帮助或说明将非常感激。

2 个答案:

答案 0 :(得分:6)

这将形成一个暗模式窗口。随后,窗口中的所有内容(包括标题栏,工具栏甚至对话框)都会变暗。

    let USE_DARK_MODE = true
    if USE_DARK_MODE {
        window.appearance = NSAppearance(named: NSAppearanceNameVibrantDark)
        window.invalidateShadow()
    }

invalidateShadow似乎不是必需的,但如果缺少,阴影有时无法正常工作。 (OS X 10.10)

答案 1 :(得分:3)

我认为你可以继承NSWindowController。将IB中的Window Controller类设置为自定义NSWindowController。之后在windowDidLoad函数中

self.window?.titlebarAppearsTransparent = true

还在属性检查器中为NSWindow设置“全尺寸内容视图”。

enter image description here