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

How do I get a titlebar to show programmatically in NSWindow?

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

这是我使用的代码:

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 但没有成功。

这是我看到的:

我在 10.12

上使用 Xcode 8.3

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

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

要将它们合而为一,可以使用数组

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

但尽量写成swift风格

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