如何在NSWindow中以编程方式显示标题栏?

时间:2017-04-08 09:12:57

标签: swift macos cocoa nswindow

我试图以编程方式开发OS X cocoa应用程序,并且我正在尝试显示一个带有标题栏的窗口,该窗口在顶部显示通常的交通灯(关闭,最小化,全屏)选项。 但是,当窗口显示在屏幕上时,只有一个空窗口。

以下是我正在使用的代码:

class AppDelegate: NSObject, NSApplicationDelegate {

let window = NSWindow(contentRect: NSMakeRect(10, 10, 200, 200),
                        styleMask: NSWindowStyleMask.closable,
                        backing: NSBackingStoreType.buffered, defer: true)

func applicationDidFinishLaunching(_ aNotification: Notification) {

    self.titleVisibility = .visible;
    self.titlebarAppearsTransparent = false;
    self.isMovableByWindowBackground  = true;

    let controller = NSWindowController(window: window)
    controller.showWindow(self);

}

我在构建NSWindow时尝试了不同的NSWindowStyleMask,但没有成功。

这就是我所看到的:

black window with no titlebar

我在10.12上使用Xcode 8.3

1 个答案:

答案 0 :(得分:2)

所以你需要4个样式面具。

NSWindowStyleMask.closable NSWindowStyleMask.miniaturizable NSWindowStyleMask.resizable NSWindowStyleMask.titled

要将它们全部放入一个,您可以使用数组

[NSWindowStyleMask.closable, NSWindowStyleMask.miniaturizable, NSWindowStyleMask.resizable, NSWindowStyleMask.titled]

但尝试用快速风格写作

[.closable, .miniaturizable, .resizable, .titled]