调整窗口大小事件

时间:2016-02-28 20:45:14

标签: swift cocoa

我正在创建一个简单的操作系统应用程序,但我找不到任何地方如何进行调整大小事件。

我们假设我想打印新的宽度和高度,我有这个控制器:

class ViewController: NSViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
    override var representedObject: AnyObject? {
        didSet {
            // Update the view, if already loaded.
        }
    }

}

我要添加什么?谢谢。

我的问题与Listen for window resize event in Swift / Objective-C不一样。由于我的观看次数必须延长NSViewController而不是NSWindowController。在他的回答中,他没有解释windowWillResize必须准确返回的内容

2 个答案:

答案 0 :(得分:7)

您需要在某处实现NSWindowDelegate,并将窗口的委托设置为该对象。如果需要,可以在视图控制器中实现此代码。

class ViewController: NSViewController, NSWindowDelegate {
    override func viewWillAppear() {
        self.view.window.delegate = self
    }

    func windowWillResize(sender: NSWindow, toSize frameSize: NSSize) -> NSSize {
        // Your code goes here
    }

    func windowDidResize(notification: NSNotification) {
        // Your code goes here
    }
}

答案 1 :(得分:4)

Swift 4 - macOS 10.13

class ViewController: NSViewController, NSWindowDelegate {

    override func viewDidAppear() {
        view.window?.delegate = self
    }

    func windowDidResize(_ notification: Notification) {
        // This will print the window's size each time it is resized.
        print(view.window?.frame.size)
    }
}