以编程方式创建NSWindow

时间:2015-01-19 19:00:53

标签: swift xcode macos swift3 nswindow

我想以编程方式创建一个新的NSWindow,但是 我找不到成功的方法。 这个简单的代码不会显示新窗口。怎么了?

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    @IBOutlet weak var window: NSWindow!

    func applicationDidFinishLaunching(aNotification: NSNotification) {
        let win = NSWindow(contentRect: NSMakeRect(100, 100, 600, 200),
            styleMask: NSResizableWindowMask,
            backing: NSBackingStoreType.Buffered, defer: true)

        let controller = NSWindowController(window: win)

        controller.showWindow(self)
        win.makeKeyAndOrderFront(win)
    }
}

2 个答案:

答案 0 :(得分:9)

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
    let newWindow = NSWindow(contentRect: NSMakeRect(0, 0, NSScreen.main()!.frame.midX, NSScreen.main()!.frame.midY), styleMask: [.closable], backing: .buffered, defer: false)
    func createNewWindow() {
        newWindow.title = "New Window"
        newWindow.isOpaque = false
        newWindow.center()
        newWindow.isMovableByWindowBackground = true
        newWindow.backgroundColor = NSColor(calibratedHue: 0, saturation: 1.0, brightness: 0, alpha: 0.7)
        newWindow.makeKeyAndOrderFront(nil)
    }
    func applicationDidFinishLaunching(_ notification: Notification) {
        createNewWindow()
    }
    func applicationWillTerminate(_ notification: Notification) {
        // Insert code here to tear down your application
    }
}

Window Style Mask

答案 1 :(得分:0)

这是一个没有任何花哨的工作示例,已更新为Swift 4.2。

它将创建一个裸窗口,其中包含&不包含笔尖,具体取决于您调用的函数。

在IB中,取消选中“初始控制器”的所有位置。为了使该笔尖版本起作用,必须为IB提供的窗口控制器提供一个故事板ID“ WindowController”。

<html>
<wrapper-overlay>

  <body>
  </body>
</wrapper-overlay>

</html>